使用jQuery 1.8.3和1.9.1的CORS

时间:2016-03-04 22:53:50

标签: javascript jquery ajax cors

我正在尝试使用CORS进行PATCH / POST。下面的代码适用于jQuery 1.9.1,但不适用于1.8.3。

var settingsB = {
          "async": false,
          "crossDomain": true,
          "url": "https://wmmr85ap13.execute-api.us-west-2.amazonaws.com/dev/customer/" + m,
          "method": "PATCH",
          "headers": {
            "content-type": "application/json"
          },
          "data": JSON.stringify({isFirstLogin: "false"})
        }

        $.ajax(settingsB).done(function (response) {

            console.log(response);
        });

在jquery 1.8.1上我得到了:

  

XMLHttpRequest无法加载   https://wmmr85ap13.execute-api.us-west-2.amazonaws.com/dev/customer/jvthales@gmail.com {%27isFirstLogin%27:%20false%20}。   对预检请求的响应未通过访问控制检查:否   请求中存在“Access-Control-Allow-Origin”标头   资源。来源'http://emporiodacerveja.vtexcommercestable.com.br'   因此不允许访问。响应具有HTTP状态代码   400。

我认为CORS在服务器上配置得很好,因为jQuery 1.9.1可以工作!

使用1.9.1 vs 1.8.3版本进行post / patch有什么差异吗?

EDITED: 请参阅下面1.9.1与1.8.3通话之间的区别:

jQuery 1.8.3

jQuery 1.9.1

2 个答案:

答案 0 :(得分:1)

需要设置类型和xhrFields

$.ajax({
   type : "PATCH",  //replaced my method in 1.9
   url: cross_domain_url,
   xhrFields: {
      withCredentials: true
   }
});

答案 1 :(得分:0)

jQuery 1.9.0中添加了method参数。

  

方法
  (默认:'GET')
  类型:String要用于的HTTP方法   请求(例如“POST”,“GET”,“PUT”)。 (版本添加:1.9.0)

source