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

时间:2015-05-14 17:24:39

标签: javascript jquery ajax http-headers

当我运行它时,它会出于某种原因发送两个请求。当我删除headers对象时,它只运行一次。为什么它与header对象一起运行两次?

$.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网络检查员时,我发现在Method下有人说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");

1 个答案:

答案 0 :(得分:1)

在某些条件下(在本例中为时间标题的呈现),对于跨源GET请求,首先发送pre-flight OPTIONS请求,以确保接收服务器接受这些类型的请求。

阅读跨源资源共享和同源策略。