我一直在致力於一個AngularJS項目,該項目必須向一個restfull webservice發送AJAX調用。這個web服務在另一個域上,所以我必須在服務器上啓用cors。我這樣做,通過設置這些標題:AngularJS withCredentials
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Origin", "http://localhost:8000");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Credentials", "true");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
我能夠從AngularJS發送AJAX請求到後端,但我現在面臨一個問題,當我試圖讓一個會話的屬性。我相信這是因爲sessionid cookie不會發送到後端。
我能夠通過將withCredentials設置爲true來解決這個問題。
$("#login").click(function() {
$.ajax({
url: "http://localhost:8080/api/login",
data : '{"identifier" : "admin", "password" : "admin"}',
contentType : 'application/json',
type : 'POST',
xhrFields: {
withCredentials: true
},
success: function(data) {
console.log(data);
},
error: function(data) {
console.log(data);
}
})
});
$("#check").click(function() {
$.ajax({
url: "http://localhost:8080/api/ping",
method: "GET",
xhrFields: {
withCredentials: true
},
success: function(data) {
console.log(data);
}
})
});
我面對的問題是,我無法在AngularJS中使用$ http服務來獲取此問題。我試過這樣的:
$http.post("http://localhost:8080/api/login", $scope.credentials, {withCredentials : true}).
success(function(data) {
$location.path('/');
console.log(data);
}).
error(function(data, error) {
console.log(error);
});
誰能告訴我我做錯了什麼?
+1
$httpProvider.interceptors.push('UtimfHttpIntercepter');
,並創建工廠,如果您正在使用ngresource你將宣佈在方法調用的東西,如'」:
在你的配置添加該getUserDetail':{method:'GET',params:{},withCredentials:true}' – ch4nd4n
在這種情況下,只有withCredentials:true以這種形式出現,或者也可以選擇Content-Type,Accept,crossDomain,Access-Control-Allow-Credentials /產地/頭? – wanttobeprofessional
在這種情況下,較舊和較新的版本是? – wanttobeprofessional