【问题标题】:jQuery.ajax() sends request more than once if headers object is set如果设置了 headers 对象,jQuery.ajax() 会多次发送请求
【发布时间】:2015-05-14 17:24:39
【问题描述】:

当我运行它时,它出于某种原因发送了两个请求。当我删除 headers 对象时,尽管它只运行一次。为什么它与 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 网络检查器时,我看到在 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");

【问题讨论】:

标签: javascript jquery ajax http-headers


【解决方案1】:

在某些条件下(在这种情况下是时间标头的存在),对于跨源 GET 请求,首先发送 pre-flight OPTIONS 请求,以确保接收服务器接受这些类型的请求。

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

【讨论】:

  • 我已经用我正在使用的服务器标头更新了问题。你说的是那些标题吗?
  • @TheBoogieMan 没有在 ajax 请求中设置的标头。
猜你喜欢
  • 2013-12-25
  • 2011-05-24
  • 2012-06-05
  • 2021-10-22
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多