javascript – IE在哈希更改时发出额外的GET请求

当我创建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()
})

我也试过这些链接将href属性设置为HTML中的#1,#2等等(并删除了e.preventDefault()).这样哈希就会自然地改变.不,无论如何都要提出额外的要求.

解决方法:

访问者是否被重定向到受影响的页面?如果是这样,它可能是一个已知的IE错误.

看看这个类似的问题:javascript location.hash refreshing in IE

相关文章

Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一...
本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改l...
nginx不仅可以隐藏版本信息,还支持自定义web服务器信息 先看...
一 、此次漏洞分析 1 nginx HTTP/2漏洞 [nginx-announce] ng...
###进入nginx 目录cd /usr/local/nginx###递归显示 2 级目录...
在cmd命令窗口输入下面命令进行查看 tasklist /fi "ima...