我正在尝试使用AngularJS中的$http
来调用Web服务。我为我的模块定义了$httpProvider
,为每个HTTP请求添加了某些标头。
我当前设置的所有标头都会反映在发送的请求中(在Google Chrome的“网络”标签中进行检查时)。但是,以下行未设置cookie值的标头
$http.defaults.headers.common['Cookie'] = "test123";
当我使用此行时,我在控制台中收到错误
"Refused to set unsafe header "Cookie"
当我在网络选项卡中检查请求标头时,Cookie的值类似于
Cookie:csrftoken=tQATyTRP64PqNjvb9e2znhExGRtcJH6e; DoNotShowFTU=true;
lastMangerHost=http%3A//localhost%3A8089; showRightRail=true
那么,为什么浏览器不接受我设置的cookie。有人可以帮我解决这个问题。我基本上想要在HTTP POST请求的标头中传递cookie值。
这是我的完整代码。
var testCookieApp = angular.module('sampleCookieApp', []).run(function($http){
$http.defaults.headers.common['tenant_id'] = "123";
$http.defaults.headers.common['cas_filter_user'] = "parth";
$http.defaults.headers.common['user_desc'] = 'null';
$http.defaults.headers.common['Content-Type'] = 'application/json';
//set cookies with key name 'Cookie' gives error in browser
$http.defaults.headers.common['Cookie'] = "test123";
$http.defaults.headers.common['Access-Control-Allow-Credentials'] = true;
$http.defaults.headers.common['Access-Control-Allow-Origin'] = '*';
$http.defaults.headers.common['Access-Control-Allow-Headers'] = '*';
$http.defaults.headers.common['Access-Control-Expose-Headers'] = '*';
$http.defaults.headers.common['crossDomain'] = true;
});
testCookieApp.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.withCredentials = true;
}]);
testCookieApp.controller("TestCookieController", function ($scope, $http,$q) {
$scope.authenticateUser = function(){
var deferred = $q.defer();
$http({
method: 'GET',
url: 'http://localhost:8081/RestEasyExample/rest/getData',
headers: {
'Content-Type': 'application/json'
}
}).success(function (data) {
alert("success");
deferred.resolve(data);
}).error(function (data) {
alert("error");
deferred.reject('There was an error while making request');
});
};
});
目前,我获得了成功" webservice运行时的页面,但标题中未设置cookie。