跨域请求withCredentials无法正常工作

时间:2012-09-11 07:03:52

标签: html5 jquery

我正在开发一个身份验证网站,用于验证来自Web服务的数据。我的网站在本地运行,Web服务在不同的域ex:test.abc.com上运行。如果验证成功,则将响应存储在cookie中。

如果数据在cookie中可用且未过期,则在第二次调用中不要求进行身份验证,但需要从后端验证用户。为此,我使用下面的代码。

  $.ajax({
    url:"https://test.abc.com/test/DummyTest",              
    method:"GET",
    dataType:"json",
    beforeSend: function(xhr){
        xhr.withCredentials = true;
    },
    success:function(data){
        alert(Success);
    },
    error:function(xhr,err){
    alert("Error");
 });

我正在使用jquery1.6

我检查了浏览器选项,并将cookie与我的localhost ip(160.225.230.50)地址一起存储。但Web服务位于不同的域(abc.com)。在第二次访问时,我得到了错误响应。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

为了实现此功能,您的身份验证页面应发送Access-Control-Allow-OriginAccess-Control-Allow-Credentials标题。

使用Access-Control-Allow-Credentials: true时,您无法将Access-Control-Allow-Origin设置为通配符,但需要指定原点:Access-Control-Allow-Origin: https://abc.com

此外,还有一种更简单的方法来设置xhr字段:

$.ajax({
  xhrFields: {
    withCredentials: true
  },
  type: 'POST',
  url: ...
});