我正在尝试调试服务器端的问题,并且我认为它与从浏览器发送的接受标头有关。这是我的问题,为什么Internet Explorer会将“接受”标题从一个页面更改为另一个页面?我可以从javascript更改请求标头吗?
以下是来自一页的请求:
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-application, application/x-shockwave-flash, */*
以下是来自其他网页的请求:
Accept: */*
他们都是GET请求,我看到内容之间有任何重大差异。所有这些都来自同一个应用程序服务器(Websphere)。
答案 0 :(得分:6)
根据this blog post from an IE developer,IE与其Accept标头“不一致”。它解释了您看到的额外值来自一个注册表项,哪些应用程序可以添加其内容类型,但不解释为什么不总是使用此注册表项中的值:
但是,在某些导航中,您会看到IE发送更完整的字符串,其中包含各种MIME类型。例如:
image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/msword, application/vnd.ms-excel, application/x-shockwave-flash, */*
点击F5刷新该页面,IE可能会再次发送 / 。显然,IE在Accept头中选择发送的内容不一致,但到现在为止,您可能很好奇这些MIME类型的来源。
IE通过枚举以下注册表项中列出的值来生成此列表:
HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Accepted Documents
知道这可能并不能真正解决您的问题。但请注意,*/*
仍然出现在两个Accept标头中,因此就内容协商而言,这里应该没有问题。但是,添加到标题中的额外类型可能会使请求过大,因此可能会为您提供有关从哪里开始查找的线索。
您可以使用this page中描述的XMLHttpRequest.setRequestHeader()
方法修改异步(XMLHttpRequest)请求的标头。
另请参阅此问题:Adding custom HTTP headers using JavaScript
免责声明:我没有尝试将此用于Accept标头。
但是,如果您要控制的请求不是AJAX请求,我不知道您可以通过JavaScript修改这些请求。
很抱歉,我无法为您的两个问题提供完整的答案,但我希望我提供的信息有用。