2014-09-02 2 views
0

В моем понимании:будет принимать заголовки Http, переваривать любые другие форматы, кроме указанных?

заголовок Accept используется HTTP clients, чтобы сообщить серверу, какие типы контента они будут принимать. Затем сервер отправит ответ, в который будет входить заголовок Content-Type, сообщающий клиенту, каков тип контента возвращаемого контента.

С этим пониманием, я попробовал следующее:

curl -X GET -H "Accept: application/xml" http://www.google.com -v 

* About to connect() to www.google.com port 80 (#0) 
* Trying 173.194.33.81... 
* connected 
* Connected to www.google.com (173.194.33.81) port 80 (#0) 
> GET/HTTP/1.1 
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5 
> Host: www.google.com 
> Accept: application/xml 
> 
< HTTP/1.1 200 OK 
< Date: Tue, 02 Sep 2014 17:58:05 GMT 
< Expires: -1 
< Cache-Control: private, max-age=0 
< Content-Type: text/html; charset=ISO-8859-1 
< Set-Cookie: PREF=ID=5c30672b67a74789:FF=0:TM=1409680685:LM=1409680685:S=PsGclk3vR4HWjann; expires=Thu, 01-Sep-2016 17:58:05 GMT; path=/; domain=.google.com 
< Set-Cookie: NID=67=rPuxpwUu5UNuapzCdbD5iwVyjjC9TzP_Ado29h3ucjEq4A_2qkSM4nQM3RO02rfyuHmrh-hvmwmgFCmOvISttFfHv06f8ay4_6Gl4pXRjqxihNhJSGbvujjDRzaSibfy; expires=Wed, 04-Mar-2015 17:58:05 GMT; path=/; domain=.google.com; HttpOnly 
< P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info." 
< Server: gws 
< X-XSS-Protection: 1; mode=block 
< X-Frame-Options: SAMEORIGIN 
< Alternate-Protocol: 80:quic 
< Transfer-Encoding: chunked 
< 
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en">< 

Как вы можете заметить в ответ, я послан Content-Type: text/html; charset=ISO-8859-1, который не то, что я просил?

Почему другое представление (HTML в этом случае) отправляется, хотя я спросил xml?

Благодаря

ответ

1

От RFC 2616:

Если Принять поле заголовка присутствует, и если сервер не может отправить ответ, который является приемлемым в соответствии с комбинированным Accept значение поля, то сервер СЛЕДУЕТ отправить 406 (неприемлемый) ответ.

Здесь, «следует» означает, что Google на самом деле не обязан бросить ошибку 406. Но поскольку вы получаете ответ HTML, он имеет то же значение.

+0

Что вы подразумеваете под тем же значением? – eagertoLearn

+0

@eagertoLearn Ну, поскольку возвращаемое содержимое имеет тип 'text/html', это означает, что запрошенный вами тип контента недоступен. –

Смежные вопросы