IE 对哈希更改发出额外的 GET 请求
Posted
技术标签:
【中文标题】IE 对哈希更改发出额外的 GET 请求【英文标题】:IE makes extra GET-request on hash change 【发布时间】:2012-02-16 12:57:21 【问题描述】:当我发出 XMLHttpRequest 时,我也会更改 window.location.hash
。
例如,mysite.com/gallery/q#1
变为 mysite.com/gallery/q#2
。
当这种情况发生时,IE8,如 Fiddler 和 nginx 日志所示,向mysite.com/gallery/
(即 404)发出这个奇怪的额外请求。
页面没有重新加载,它就像一个 XMLHttpRequest。
GET http://mysite.com/gallery/ HTTP/1.1
Accept: */*
Referer: http://mysite.com/gallery/q
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)
Accept-Encoding: gzip, deflate
Host: mysite.com
Connection: Keep-Alive
另外,哈希更改或 Ajax 请求不会触发这个额外的。
另一件需要注意的事情 - 额外的请求发生在不是在每个 Ajax 请求上。这似乎是随机发生的。
会不会是 nginx 配置错误?或者它只是众多 IE8 错误之一?
有解决方法吗?我不想要这个额外的负载。
更新
这是 Ajax 代码($
代表 jQuery):
var id = link.getAttribute('data-id')
var xhr = $.ajax(
cache: false,
url: '/stock-items',
method: 'GET',
data: id: id ,
dataType: 'json'
)
xhr.success(function (data)
if (currentId === id)
toggleLoader(false)
displayData(data)
)
以及哈希操作代码:
function setHash(link)
var index = $(link).index()
globals.location.hash = index + 1
也尝试使用哈希符号,结果相同:
globals.location.hash = '#' + index + 1
Ajax 请求是点击图库图片链接:
links.on('click', function (e)
setHash(this)
loadData(this)
e.preventDefault()
)
我还尝试了这些links
将href
属性设置为html 中的#1
、#2
等等(并删除了e.preventDefault()
)。让哈希自然变化。不,无论如何都会提出额外的请求。
【问题讨论】:
您用于更改哈希的确切 javascript 是什么? @EricLaw-MSFT-,将代码添加到问题中。 【参考方案1】:访问者是否从另一个页面被重定向到受影响的页面?如果是这样,很可能是一个已知的 IE 错误。
看看这个类似的问题:javascript location.hash refreshing in IE
【讨论】:
格雷格,是的,我见过这个问题。这不是重定向,该问题的答案中提供的解决方案不适用于我的情况(我检查过)。 网站现在上线了吗?你能分享受影响页面的路径吗? 格雷格,它还没有上线。不过,我可以分享代码。很快就会看到更新的问题。以上是关于IE 对哈希更改发出额外的 GET 请求的主要内容,如果未能解决你的问题,请参考以下文章