为什么在发送跨域请求时仍明确告诉ajax携带cookie仍然无效?

问题描述 投票:0回答:1

我的前端同事访问他的本地应用程序,并为其设置主机

127.0.0.1 my.foo.com

同时在页面中他调用后端api,它在我的机器中由ajax

$.ajax({
    type: "post",
    url: 'http://192.168.0.204:8080/bar/search',
    contentType : "application/json;charset=utf-8",
    dataType: "json",
    ...

因为一个是my.foo.com而另一个是192.169.0.204:8080,所以后端在这种情况下不能接收cookie,因为它是跨域的。所以需要明确告诉ajax请求在请求头中携带cookie,同时服务器还需要在响应头中做一些配置,见下文

client:  xhrFields: { withCredentials: true }
server: 
- Access-Control-Allow-Credentials:true
- Access-Control-Allow-Origin: http://my.foo.com/

然后我发现服务器仍然无法接收cookie。我想知道为什么明确告诉ajax携带cookie不起作用?

ajax cookies cors
1个回答
1
投票

Cookie始终被挖掘到特定域,并且永远不会发送到其他域中的服务器。

Allow-Origin不会改变这一事实。它只是通知浏览器允许命名主机上的脚本访问192主机。这并不意味着cookie是共享的,正如你所见,它们不是。

您最简单的解决方案是将两个站点放在一个域下,并将cookie范围限定在共享域中。他们两个网站都可以阅读。无论如何你要编造名字,为什么不命名双方呢?

还有其他跨域共享数据的技术,但它们都涉及以cookie以外的某种方式发送数据。

© www.soinside.com 2019 - 2024. All rights reserved.