1

我正在开发一个身份验证网站,用于对来自 Web 服务的数据进行身份验证。我的网站在本地运行,并且 Web 服务在不同的域上运行,例如: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) 地址一起存储。但网络服务在不同的域(abc.com)。第二次访问时,我得到了错误响应。

请帮帮我。

4

1 回答 1

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: ...
});
于 2012-09-26T08:18:54.550 回答