Das Projekt übernimmt die Trennung von Front-End und Back-End. Das Front-End befindet sich auf dem lokalen Server und verwendet VUE. Die Backend-Schnittstelle befindet sich in der Alibaba Cloud. Die Cookies werden nach dem ersten Besuch gesetzt. Als ich sie jedoch lokal testete, wurden sie zurückgegeben Für mich war das anders. Was ist der Grund dafür?
zB: Zwei Schnittstellen, wie die folgende
get_user.json Diese Schnittstelle gibt mir Set-Cookies. Kann mein Frontend diese Set-Cookies erhalten?
2. 然后我登陆成功后再去获取订单信息 get_order.json的话,后端就会显示`未登录`,我发现后端set-cookie也发生了变化,为什么?
Ich möchte, dass sich der Server den Anmeldestatus merkt. Meine Idee ist, dieses Set-Cookie nach erfolgreicher Anmeldung abzurufen und das Cookie dann jedes Mal an das Backend zu senden, um sich den Status zu merken.
Aber das Problem ist, dass der Wert von Set-Cookie in der vorherigen Phase, die ich verwende, nicht erhalten werden kann
你前端发起请求到后台,这里跨域了,不会带上已有的 Cookie。
解决方案
自己架个反向代理啥的把两个搞到一个域名上。
前端设置
withCredentials
,后端设置Access-Control-Allow-Credentials
。设置了 HttpOnly 属性的 cookie 不能使用 JavaScript 经由 Document.cookie 属性、XMLHttpRequest 和 Request APIs 进行访问,以防范跨站脚本攻击(XSS)。
至于为什么这个值会变化,这是跟后端的session机制有关。当你浏览一个网页时,服务端随机产生一个字符串,然后存在你cookie中。当你下次访问时,cookie 会带有这个字符串,由于字符串是随机产生的,而且位数足够多,所以也不担心有人能够伪造。