0

我的问题是cookies是如何工作的,当我第一次加载我的页面时,我想到了这个问题

REQUEST HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en;q=0.9,en-US;q=0.8
Cache-Control: max-age=0
Connection: keep-alive
Cookie: csrftoken=gsZxmbW4XUpE6YnaQhlrAx9JduyExVgzWEo4fXhcY4V3fbHWVtwf0msbDQDT5r43
Host: 127.0.0.1:8000
Upgrade-Insecure-Requests: 1

当第一个请求被发送时,它已经在 cookie 中有 csrftoken

我在隐身窗口中尝试了相同的结果,也得到了相同的结果。我的浏览器如何在没有与服务器通信的情况下已经拥有 cookie

我正在使用 Angular 7 开发 django,问题是我正在从 Angular 发送我的请求

 this.http.post('http://127.0.0.1:8000/',data,  {observe : "response", withCredentials: true } )}

但作为回应,我在 setcookie 中没有得到任何 csrftoken 。

请帮助我.....很抱歉在一个问题中添加了两个问题,但两者都间接相互关联

4

2 回答 2

0

实际上,django 在 127.0.0.1 上运行,而 angular 在 localhost(任何环回地址)上运行,这就是为什么对于安全性(CORS)问题,浏览器(chrome)不允许我在请求中发送 cookie 也不允许设置 cookie作为回应。所以我有两个选择,一个在浏览器中将相同站点更改为无,或者将我的角度设置更改为在 127.0.0.1 上呈现。

于 2019-07-24T12:36:29.510 回答
0

CSRF 只能停止 PUT、POST 和 DELETE,它总是通过 GET 请求打开,如果你能够在第一次通过 GET 发送它,那就很好了。

于 2021-11-02T12:45:44.003 回答