我在這個主題上做了大量的研究,但它仍然不適合我。 我在Django中設置了我的csrftoken
cookie,並且它在響應對象中執行。Angular無法從Django獲取CSRF cookie
但在任何瀏覽器中,它說:no cookies in this site
後端:
@ensure_csrf_cookie
def home(request):
csrf_token = get_token(request)
response = HttpResponse()
response = render(request, 'index.html')
response.set_cookie(key='csrftoken', value=csrf_token)
return response
角:
myapp.config(function($httpProvider){
//I use this when in angular1.0.x
//$http.defaults.headers.post['X-CSRFToken'] = $cookies['csrftoken'];
//now in angular1.2.x I use code below. but none of them works
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
});
當我做一個職位,我得到消息
Failed to load resource: the server responded with a status of 403 (FORBIDDEN)
而且如果我 打印頭信息在$ HTTP錯誤功能:
console.log(header('Set-Cookie'));
console.log(header('Access-Control-Allow-Headers'));
console.log(header('Access-Control-Allow-Methods'));
所有這三個都是null
。
我不明白爲什麼!尤其是,它在Firefox或Chrome中工作正常,但在Apache服務器中,在此站點中始終沒有cookie。
有沒有我應該做的setting
?任何人都可以幫我解決這個問題嗎?
所以這個問題可能與如何定義你的apache來存儲cookie有關。查看['mod_session_cookie'文檔](https://httpd.apache.org/docs/trunk/mod/mod_session_cookie.html) – yuvi
謝謝yuvi,快速回放。這只是我在Bluehost上使用共享託管服務器。我對服務器端來說很新,所以我現在應該檢查什麼?謝謝。 – flyaway
實際上,如果您使用的是託管服務,那麼這樣一個簡單的問題,例如忘記允許使用Cookie等是不太可能的。所以我們回頭看看你自己的代碼。我也猜測這個問題與角度有關,而不是django。你見過[類似的情況下的這個答案](http://stackoverflow.com/a/18159276/2387772)? – yuvi