http

Discussion in 'PHP' started by Ru}{eeZ, 4 Jun 2009.

  1. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Почему, когда я отсылаю на yandex.ru:80 запрос "OPTIONS * HTTP/1.0", он возвращает:
    Code:
    HTTP/1.1 200 OK
    Date: Thu, 04 Jun 2009 10:56:02 GMT
    Server: Apache/2.2.9 (Unix) mod_perl/2.0.4 Perl/v5.8.8
    Content-Length: 0
    Connection: close
    Content-Type: text/plain
    а при запросе "OPTIONS * HTTP/1.1":
    Code:
    HTTP/1.1 400 Bad Request
    Date: Thu, 04 Jun 2009 10:57:01 GMT
    Server: Apache/2.2.9 (Unix) mod_perl/2.0.4 Perl/v5.8.8
    Vary: Accept-Encoding
    Content-Length: 226
    Connection: close
    Content-Type: text/html; charset=iso-8859-1
    
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
                                                      <html><head>
                                                                  <title>400 Bad Req
    uest</title>
                </head><body>
                             <h1>Bad Request</h1>
                                                 <p>Your browser sent a request that
     this server could not understand.<br />
                                            </p>
                                                </body></html>
    т.е. ошибку, якобы он не может понять запрос? Ведь я указываю, что в первом запросе я хочу установить коннект через http версии 1.0, а он возвращает инфу о сервере и говорит, что установленный протокол - 1.1, а когда я шлю запрос с установкой коннекта через протокол 1.1, он отвечает, что не понимает запрос.
     
  2. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,515
    Likes Received:
    400
    Reputations:
    196
    Не все серверы нынче подерживают OPTIONS, некоторые даже режут эту информацию...

    А яша вообще на RFC кладет
     
    1 person likes this.
  3. _artem_

    _artem_ Elder - Старейшина

    Joined:
    27 Jul 2005
    Messages:
    128
    Likes Received:
    27
    Reputations:
    11
    HTTP/1.1 требует за собой указание Host: хост.

    пример

    Code:
    nc -v localhost 80
    
    POST /1.php HTTP/1.1
    Host: localhost
    Content-type: application/x-www-form-urlencoded
    Content-length: 10
    
    blabla=123
    
    ответ сервака:
    Code:
    HTTP/1.1 200 OK
    Date: Wed, 29 Jul 2009 15:34 GMT
    Server: Apache/2.2.11 (Unix) PHP/5.3.0
    X-Powered-By: PHP/5.3.0
    Content-Length: 195
    Content-Type: text/html
    
    <html>
    <head>
    <title>form</form>
    </head>
    <body>
    <form action="1.php" method="POST">
    <input type=text" name="blabla" id="blabla" value="123"><input type="submit">
    </form>
    </body>
    </html>
    
    ответ без указание хоста

    Code:
    HTTP/1.1 400 Bad Request
    ...
    <html><head>
    <title>400 Bad Request</title>
    </head><body>
    <h1>Bad Request</h1>
    <p>Your browser sent a request that this server could not understand.<br />
    </p>
    </body></html>
    
    п.с. надо бы знать разницу между HTTP/1.0 и 1.1 !!!!!!!!!