如果设置了 headers object,jQuery.ajax() 会多次发送请求
jQuery.ajax() sends request more than once if headers object is set
当我运行这个时,它出于某种原因发送了两个请求。当我删除 headers
object 时,虽然它只有 运行 一次。为什么 运行ning 两次 headers object?
$.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
。除此之外,请求完全相同。
在服务器上,我设置了以下 headers:
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");
在特定条件下(在本例中为时间 header 的礼物),对于跨源 GET 请求,首先发送 pre-flight OPTIONS 请求以确保接收服务器接受这些类型的请求请求。
阅读跨源资源共享和同源策略。
当我运行这个时,它出于某种原因发送了两个请求。当我删除 headers
object 时,虽然它只有 运行 一次。为什么 运行ning 两次 headers object?
$.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
。除此之外,请求完全相同。
在服务器上,我设置了以下 headers:
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");
在特定条件下(在本例中为时间 header 的礼物),对于跨源 GET 请求,首先发送 pre-flight OPTIONS 请求以确保接收服务器接受这些类型的请求请求。
阅读跨源资源共享和同源策略。