Tôi đang phát triển ứng dụng DJANGO + AngularJS, trong đó phần góc không được phục vụ bởi django.Tiêu đề XSRF không được đặt trong AngularJS
tôi đặt góc $httpProvider
như sau:
myApp = angular.module('myApp', [])
myApp.config(['$httpProvider',
function(provider){
provider.defaults.xsrfCookieName = 'csrftoken';
provider.defaults.xsrfHeaderName = 'X-CSRFToken';
}
Sau đó, trước khi thực hiện bất kỳ POST, tôi làm một GET mà đặt cookie. Tôi có thể khẳng định thông qua Chrome rằng cookie được thiết lập:
set-cookie:csrftoken=hg88ZZFEdLPnwDdN1eiNquA8YzTySdQO; expires=Tue, 19-Aug-2014 12:26:35 GMT; Max-Age=31449600; Path=/
(nó hiển thị trong tài/cookie/localhost trong các công cụ nhà phát triển Chrome)
Tuy nhiên khi tôi làm một POST, không X-CSRFToken
tiêu đề đang được thiết lập
đây là POST như được ghi bởi Chrome:
POST /data/activities/search HTTP/1.1
Host: localhost:14080
Connection: keep-alive
Content-Length: 2
Accept: application/json, text/plain, */*
Origin: http://localhost:14080
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36
Content-Type: application/json;charset=UTF-8
Referer: http://localhost:14080/public/html/main.html?codekitCB=398694184.799418
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: csrftoken=hg88ZZFEdLPnwDdN1eiNquA8YzTySdQO
Tại sao không có tiêu đề được thiết lập? Tôi nên làm gì khác để kích hoạt chức năng này?
(mặt lưu ý: nếu tôi tự vượt qua tiêu đề trong $ http() cuộc gọi, yêu cầu POST hoạt động tốt .. do đó vấn đề thực sự là tiêu đề không được thiết lập bởi AngularJS)
Tôi đã sử dụng 1.0.8, nhưng tôi phát hiện ra nó chỉ có sẵn từ phiên bản 1.2.0 – luca