如何使用cookie发送跨域ajax请求

时间:2014-04-01 05:29:45

标签: javascript ajax node.js cookies saas

我正在开发SaaS应用程序,用户在我的SaaS系统中创建帐户并登录。然后,SaaS应用程序有一个JS代码,客户应该在他们的网站中包含这个JS代码,在代码中我需要向我的SaaS域发送POST Ajax请求(这是一个跨域请求)。 / p>

问题是,为了共享已登录用户的凭据,我必须将withCredentials属性和Access-Control-Allow-Credentials标头设置为true

我不确定这是不是一个好方法?也许我应该使用另一种方法,比如使用OAuth或其他东西来共享登录用户凭证......

我会很感激任何建议。

2 个答案:

答案 0 :(得分:-1)

您需要使用JSONP作为您的类型:

$.ajax(
{ 
  type: "POST",
  url: "http://test.com/api/getlist.json",
  dataType: 'jsonp',
  xhrFields: {
       withCredentials: true
  },
  crossDomain: true,
  beforeSend: function(xhr) {
        xhr.setRequestHeader("Cookie", "session=xxxyyyzzz");
  },
  success: function(){
       alert('success');
  },
  error: function (xhr) {
         alert(xhr.responseText);
  }
}
);

答案 1 :(得分:-1)

要使用凭据启用跨域请求,您的服务器应支持CORS。启用CORS后,您的客户端代码可以将withCredentials集添加到true以在请求中包含Cookie。