我尝试从我的角度应用程序中获取xcsrf令牌,然后使用该令牌将数据发布到后端。
在localhost中禁用CORS时,我能够安装xcsrf令牌并将其用于发布数据而不会出现问题。
但是,当我启用安全性时,似乎是新的浏览器在GET之前执行了自动选项请求。
function fetchXCSRF(){
var deferred = $q.defer();
$http({
url: reservationsEndPoint,
method: 'GET',
withCredentials: true,
headers:
{'X-CSRF-Token':'Fetch'},
timeout:5000,
}).then(function (response) {
// console.log(response.headers('x-csrf-token'));
// var xcsrfToken = response.headers('x-csrf-token');
// xcsrfToken = response.headers('x-csrf-token');
deferred.resolve(response);
}, function (error) {
deferred.reject(error.data.error.message.value);
});
return deferred.promise;
}
然后响应标头中的xcsrf-token标头为空,
fetchXCSRF().then(function(responseToken) {
console.log(responseToken.headers('x-csrf-token'));
$http({
url: reservationsEndPoint,
method: 'POST',
headers:
{'x-csrf-token': responseToken.headers('x-csrf-token')},
data: newReservation,
timeout:5000,
}).then(function (response) {
deferred.resolve(response.d);
modelBuilder.setReservationToDisplay(response);
}, function (error) {
if(error.data.error.message.value.indexOf('not available.')>-1){
console.log("There is already a reservation at this time");
}
deferred.reject(error.data.error.message.value);
});
});
return deferred.promise;
非常感谢您的帮助,我已经尝试了1天以上!