Cookie 未通过relayjs 在graphql 请求中在移动浏览器中传递

IT技术 javascript reactjs cookies graphql relayjs
2021-05-21 18:05:58

我可以在使用以下代码片段从 Graphql 查询数据时在标头中发送 cookie:

Relay.injectNetworkLayer( new Relay.DefaultNetworkLayer(GQL_URL, { credentials: 'same-origin', }));

这适用于桌面浏览器,但不适用于移动设备。

但是,当我在移动设备中打开我的网站(或使用任何移动模型在 chrome 中模拟)时,cookie 没有通过。

是否有针对 cookie 设置的移动浏览器特定处理?

此外,在分析 cookie 后,移动设备中的非 graphql rest api 调用重新被传递。

PS:这可能不相关,但在桌面的情况下,cookie 存储在不同的域名下(因为不同的请求有多个域):

abc.domain.com -> cookie1, cookie2... etc def.domain.com -> cookie1, cookie2... etc

但在移动 cookie 中存储的是相同的主机名:

abc.domain.com -> cookie1、cookie2...等

更新:在移动设备的情况下,Origin 标头是不同的。如果有帮助

任何帮助,将不胜感激。

1个回答

找到了解决办法。更改凭据以在 relayjs 中共享跨域 cookie:

Relay.injectNetworkLayer( new Relay.DefaultNetworkLayer(GQL_URL, { credentials: 'include', }));

在桌面的情况下,与移动版本相比,iframe 正在加载,在移动版本中,我们正在执行 xhr 请求,然后在 div 中插入内容。因此,在 iframe 的情况下,cookie 被存储在正确的域中,因为来自正确的来源,但在 xhr 来源的情况下保持不变。因此需要通过跨域 cookie 进行访问。

谢谢你的帮助!!