我在api.mysite.com
和other.mysite.com
的前端有api,需要AJAX才能工作,理想情况下是CSRF保护。
我可以从XHR获得csrftoken
,并设置cookie。当我使用withCredentials: true
创建另一个XHR时,新的XHR会在csrftoken
标头中发送Cookie
。
但似乎Django CsrfViewMiddleware
仅检查csrftoken
是在POST数据中,还是在x-csrftoken
标题中。它不会检查cookie(如果我没有弄错的话)。
我的问题是,Javascript无法从Cookie中读取csrftoken
,因为它是来自其他网站的Cookie。
我看到两个解决方案:
获取XHR以获取身体中的csrftoken
。当我登陆网站时,这有效,但csrftoken
可以更改(如果我退出并且我相信)
让Django从cookie中读取csrftoken
。这是我理想的目标。
我将如何做到这一点?