我面临的问题与cookie disappeared in AngularJS app using Django and CORS非常相似,我迫切需要一些帮助。
访问了一个有角度的客户网站在单独的服务器上进行查询,我们称之为http://mysite.herokuapp.com
在我的Django配置中,我有以下内容:
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_REGEX_WHITELIST = (
'^https?://www.mysite.com.*',
'^https?://((?!www\.).*\.herokuapp\.com).*',
'^https?://127.0.0.1:(\w+)$'
)
CORS_ALLOW_HEADERS = (
'x-requested-with',
'content-type',
'accept',
'origin',
'authorization',
'X-CSRFToken'
)
在Angular方面,我有:
$http.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
$http.defaults.headers.common['X-CSRFToken'] = $cookies['csrftoken'];
当我进行登录查询时,我在响应中看到以下内容:
Set-Cookie:csrftoken=RIbJ2T6oRLmGe2udiKgxjJI0jRQpxs5K; expires=Wed, 18-Feb-2015 12:33:23 GMT; Max-Age=31449600; Path=/
Set-Cookie:sessionid=4k1vdq59qaclptxmjjroua2jdo7qdh0t; expires=Wed, 05-Mar-2014 12:33:23 GMT; httponly; Max-Age=1209600; Path=/
Cookie保存在http://mysite.herokuapp.com
上不幸的是,当我向Django Rest Framework的APIView查询时,csrf验证失败了。 (即使我看到在请求标头上发送了正确的令牌;我猜这是由于域名。)