HTTP头设置问题

HTTP头设置问题,http,header,Http,Header,我正在尝试在我的客户端(而不是浏览器)中使用HTTP标头中的以下设置提取网页 Accept: "text/html;charset=UTF-8" Accept-Charset: "ISO-8859-1" User-Agent: "Mozilla/5.0" 但是我得到一个错误代码406, 我也试着换成 Accept: "text/html" 没有成功;响应标头中的错误代码和状态消息为 statusCode: 406 statusMessage: "Not Acceptable" 无论正确的页

我正在尝试在我的客户端(而不是浏览器)中使用HTTP标头中的以下设置提取网页

Accept: "text/html;charset=UTF-8"
Accept-Charset: "ISO-8859-1"
User-Agent: "Mozilla/5.0"
但是我得到一个错误代码406, 我也试着换成

Accept: "text/html"
没有成功;响应标头中的错误代码和状态消息为

statusCode: 406
statusMessage: "Not Acceptable"

无论正确的页眉设置是什么,页面都可以在浏览器中正常加载

您应该添加
接受语言
。请参见

为什么要发送相互矛盾的标题?您请求的表示同时是UTF8和ISO-8859-1。我想您可以将请求解释为7位ASCII表示


在这种情况下,我将省略
Accept字符集
,并将
Accept
标题更改为
text/html,*/*;q=0.1
,这样您就可以得到一些对HTML有强烈偏好的东西。有关这些标题的详细信息,请参阅

最后我找到了答案,我运行了一个嗅探器来查看哪些标题设置有效,下面是每种情况下有效的设置

标题:{ “用户代理”:“Mozilla/5.0(Macintosh;U;Intel Mac OS X;de de)AppleWebKit/523.10.3(KHTML,如Gecko)版本/3.0.4 Safari/523.10”, “接受字符集”:“ISO-8859-1,UTF-8;q=0.7,*;q=0.7”, “接受语言”:de,en;q=0.7,en-us;q=0.3
}

您是否正在对目标URL执行
GET
请求?您甚至不需要为大多数网站指定,您是否尝试过不使用
接受
标题?尝试过,但我得到相同的406错误状态,这就是我尝试设置标题字段的原因。您可以从浏览器访问此URL吗?这有点帮助,但不是全部。在我做出您建议的更改之前,我有13个URL失败,现在我有10个URL失败:-),所以它确实帮助了一点bitAccept头是HTTP的一个棘手部分。我猜帮助很大的部分是
*;q=0.7
接受字符集
标题中。我建议在
Accept Language
中添加一个类似的子句,质量为0.2--IOW,
Accept Language:de,en;q=0.7,在美国;q=0.3,*;q=0.2
。如果没有通配符匹配,您可能会为不明确支持英语或德语的站点获得406。