我可以在使用此代码段从 Graphql 查询数据时在 header 中发送 cookie:
Relay.injectNetworkLayer(
新的 Relay.DefaultNetworkLayer(GQL_URL, {
凭据:'同源',
}));
这适用于桌面浏览器,但不适用于移动设备。
但是当我在移动设备中打开我的网站(或使用任何移动模型在 chrome 中模拟)时,cookie 没有通过。
是否有针对 cookie 设置的任何移动浏览器特定处理?
此外,在分析 cookie 后,在移动设备中重新通过非 graphql rest api 调用。
P.S.:这可能不相关,但在桌面的情况下,cookie 存储在不同的域名下(因为有多个域用于不同的请求):
abc.domain.com -> cookie1, cookie2...等 def.domain.com -> cookie1, cookie2..等
但在移动 cookie 中存储的是同一个主机名:
abc.domain.com -> cookie1、cookie2...等
更新:原始 header 在移动设备上有所不同。如果有帮助
如有任何帮助,我们将不胜感激。
最佳答案
找到解决方案。更改凭据以在 relayjs 中共享跨域 cookie:
Relay.injectNetworkLayer(
新的 Relay.DefaultNetworkLayer(GQL_URL, {
凭据:“包括”,
}));
在桌面的情况下,iframe 被加载与移动版本形成对比,我们正在执行 xhr 请求并在之后在 div 中插入内容。 因此,在 iframe 的情况下,cookie 是针对正确的域存储的,因为来自正确的来源,但在 xhr 的情况下,来源保持不变。所以需要通过跨域cookie访问。
感谢您的帮助!
关于javascript - Cookies 没有通过 relayjs 在 graphql 请求中传递到移动浏览器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42379873/