我正在用api平台构建一个api,用react构建一个前端(使用api平台的react模板)。我配置了身份验证和返回到客户端的httponly cookie,其中包含jwt。但当我前面提出要求的时候,它不会发送这个饼干.我完全不知道为什么,我认为这是自动完成的浏览器,直到它是在同一领域。
下面是来自我的客户端的网络历史的一个例子:


我的应用程序正在https://localhost:3000/上运行
你认为这些要求有什么不对吗?或者有人知道它会从哪里来?我的应用程序和api正在使用https并且有一个有效的证书..。
如果您需要任何额外的信息,请随时询问,并感谢所有!
发布于 2020-08-20 07:23:18
好的,我找到了解决方案:向auth请求添加凭据,如果没有添加标头,cookie将不会被浏览器存储。第二点:
const fetchHydra = (url, options = {}) =>
baseFetchHydra(url, {
...options,
credentials: 'include',
});credentials: 'include'不在标头选项中..。很好!
发布于 2020-08-01 09:02:42
Cookie忽略端口,但跨源策略不忽略端口。
您使用两个urls (http://localhost:8443和http://localhost:3000)。所以您的应用程序正在制作交叉原点请求,因为端口不同。
xhr需要将其withCredentials属性设置为true,以便发送具有跨源请求的cookie。fetch要求将其凭据参数设置为包含。
服务器端,将Access-Control-Allow-Credentials设置为true。
还请注意,您的cookie是samesite=strict.在生产中,如果您使用两个域作为应用程序和api,它将永远不会被发送。
这里真正的问题是为什么使用cookie而不是Authorization头呢?
发布于 2020-08-03 07:29:31
好吧我不知道..。当我试图解决我的问题时,我什么也没发现。我之所以使用cookie httponly是因为:
非常感谢你的好听回答,鲁戈里尼夫!
https://stackoverflow.com/questions/63156982
复制相似问题