问题描述
我有两个应用程序在同一域的不同端口上运行,都使用csrf中间件。
I have two applications running on the same domain on different ports, both using csrf middleware.
当我登录其中一个应用程序时,所有 POST
从另一个失败提交。
我想是因为 SESSION_COOKIE_DOMAIN
是相同的。
When I log-in in one of the applications all POST
submits from the other fail.
I presume because the SESSION_COOKIE_DOMAIN
is the same.
我尝试更改 SESSION_COOKIE_NAME
,但是'csrftoken'
cookie是在两个站点上都以 POST
形式的请求使用,无论现在是否有一个我指定名称的新cookie。
I tried changing SESSION_COOKIE_NAME
, however, the 'csrftoken'
cookie is used in the forms POST
request on both sites, no matter that there now is a new cookie with the name I specified.
当我使用AJAX发布信息并从cookie中获取具有新名称的csrf令牌时,它可以工作,但是,表单提交失败且CSRF验证失败。
When I post information with AJAX and get the csrf token from the cookie with the new name - it works, however, form submits fail with CSRF verification failed.
推荐答案
默认情况下,CSRF令牌cookie的名称为csrftoken,但是您可以通过CSRF_COOKIE_NAME设置来控制cookie名称。 。
The CSRF token cookie is named csrftoken by default, but you can control the cookie name via the CSRF_COOKIE_NAME setting. Docs.
为每个应用使用不同的CSRF cookie名称。
Use a different CSRF cookie name for each app.
这篇关于同一域上的多个Django站点-CSRF失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!