Javascript 如果设置了headers对象,jQuery.ajax()会多次发送请求

Javascript 如果设置了headers对象,jQuery.ajax()会多次发送请求,javascript,jquery,ajax,http-headers,Javascript,Jquery,Ajax,Http Headers,当我运行它时,它出于某种原因发送了两个请求。当我删除标题对象时,尽管它只运行一次。为什么它使用headers对象运行两次 $.ajax({ type: "get", headers: { Time: time }, url: getHost() + "/leaderboard/top?gameId=" + gameId + "&token=" + createToken([gameId, time]), dataType: "jso

当我运行它时,它出于某种原因发送了两个请求。当我删除
标题
对象时,尽管它只运行一次。为什么它使用headers对象运行两次

$.ajax({
    type: "get",
    headers: {
        Time: time
    },
    url: getHost() + "/leaderboard/top?gameId=" + gameId + "&token=" + createToken([gameId, time]),
    dataType: "json",
    complete: function(data){
        showOutput(JSON.parse(data.responseText));
    }
});
当我查看chrome网络检查器时,我看到在
方法下,一个说
GET
,另一个说
OPTIONS
。除此之外,请求完全相同

在服务器上,我设置了以下标题:

this.res.setHeader("Content-Type", "text/json; charset=utf-8");
this.res.setHeader("Access-Control-Allow-Origin", "*");
this.res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Time");
对于跨源GET请求,在某些情况下(在本例中,时间报头的出现),会首先发送一个选项请求,以确保接收服务器接受这些类型的请求


阅读一些关于跨源资源共享和同源策略的内容。

这可能会对您有所帮助:这是飞行前请求。顺便说一句,您可以触发一个内容类型为
text/plain
而不是
text/json
的非飞行前请求。检查此项,我已经用我正在使用的服务器头更新了问题。“这些标题就是你所说的吗?”Boogieman没有在ajax请求中设置标题。