HTTP中的标头接受

时间:2012-11-10 14:30:25

标签: http network-programming http-headers protocols

我在http中使用“Accept”标题时出现问题。我写了http客户端,当我设置“Accept:image / png”时,我可以读取任何文件(如txt,html等...)。 如果我像上面那样设置标题“接受”,我想我应该是不可能的......

我试着查看我的Firefox行为......我写了“about:config”并将“network.http.accept.default”设置为“image / png”...我可以上网冲浪通常

我不明白这个标题的含义吗?我想我只能打开文件* .png。

有人能解释一下吗?

(抱歉我的英文)

请帮帮我。

4 个答案:

答案 0 :(得分:3)

接受不是强制性的;服务器可以(并且经常)不实现它,或者决定返回其他内容。

  

如果请求中存在[Accept]标头字段且响应的任何可用表示都没有列为可接受的媒体类型,则源服务器可以通过发送406(不可接受)来标记标头字段。 )通过将响应视为不受内容协商的影响来响应或忽略标题字段。

Source - RFC 7231 5.3.2. Accept

答案 1 :(得分:1)

实际上,前者的行为是正常的。我举个例子。

如果给定的URL指向PDF文件且Accept标头仅接受docx,则服务器将盲目地忽略它并发送PDF文件,因为服务器未设置为在PDF和其他文档之间做出决定。

如果有多种格式可用,那么服务器将考虑“Accept”标头并尝试相应地发送响应,否则,它将忽略“Accept”标头。

答案 2 :(得分:0)

接受标头很少被浏览器实现,并且在抓取工具也发出请求的公共网站上使用时会导致奇怪的错误。

这就是为什么,在Rail framework

中大多数时候都会忽略接受标头

答案 3 :(得分:0)

正如您所设想的那样,设置Accept意味着您不能接受除这些指定之外的其他媒体,并且服务器应返回406响应代码。 它实践,服务器无法正确实现,并始终发送响应。

所有详情均可在RFC 2616

中找到
相关问题