可以通过Javascript访问/读取第三方/跨域Cookie吗?

问题描述

Javascript是否可以访问从另一个域创建的cookie?

请阅读整个问题,因为我确定它涵盖了基本建议。

我的项目配置设置如下:

域:

front-end: "https://front.domainA.com"    // AWS Amplify,React
back-end: "https://back.domainB.com"      // AWS Amplify,Express.js

CORS(在server.js上):

origin: "https://front.domainA.com",credentials: true,optionsSuccessstatus: 200,

CORS(Amplify API控制台,在server.js CORS之前先达到此)

"method.response.header.Access-Control-Allow-Methods": "'DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT'","method.response.header.Access-Control-Allow-Headers": "'X-Requested-With,X-HTTP-Method-Override,Accept,Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token,csrf-token,x-csrf-token,xsrf-token,x-xsrf-token'","method.response.header.Access-Control-Allow-Origin": "'https://front.domainA.com'","method.response.header.Access-Control-Expose-Headers": "'Set-Cookie'","method.response.header.Access-Control-Allow-Credentials": "'true'"

Axios

const instance = axios.create({
    baseURL: "https://back.domainB.com";
});

instance.interceptors.request.use((req) => {
    req.withCredentials = true;

    return req;
});

export default instance;

请注意,我已经测试了在本地主机端口(前端:3000,后端:5000)之间共享cookie的问题。


更多详细信息:

调用我的cookie GET端点时,该cookie将通过“ Set-Cookie”响应标头发送回前端。但是从那里我无法获取Javascript来读取Cookie,然后我要在前端对其进行操作。

在建议您设置cookie属性之前,,我已经介绍了每个角度。我已经在每种可能的配置中都设置了cookie的域,sameSite,httpOnly,secure和path属性,但没有结果。也就是说,该示例的正确设置似乎是:

httpOnly=false
path="/"
sameSite="none"
secure=true

如果我在下面包含域设置,则会收到一条错误消息,提示:“ Set-Cookie被阻止,因为它的Domain属性对于当前主机URL无效”。因此,我将其省略。其他所有设置均为认设置。

domain='https://front.domainA.com'

总而言之,cookie实际上已被Chrome确认。如果单击浏览器栏左侧的lock (or i),icon to the left of the address bar锁(或i)图标,它们将显示在此处。它们还会显示在http响应标头中。但是它们不会显示在cookie存储中,并且不会被Javascript读取。

我的想法是,对此的唯一解决方案是将后端和前端都放在同一顶级域上。也许后端位于api.xxxx子域。

我可以接受我的假设吗?还是对我缺少的这个问题有其他解决方案?也许我缺少AWS Amplify设置来允许此设置?

提前感谢您的任何答复。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)