AngularJS使用REST對服務器端進行身份驗證,並獲取JSESSIONID cookie。 在下一步中,我試圖從服務器端使用REST以及上一步中獲得的會話cookie獲取一些JSON數據。下面是客戶端代碼:
getSomeJSONDataFromServer:function() {
var deferred = $q.defer();
$http({
method: 'POST',
withCredentials: true,
url: "http://domain.name/app/someURL",
headers:{
'Accept':'application/json',
'Content-Type':'application/json; charset=utf-8',
'Access-Control-Request-Headers': 'X-Requested-With, content-type, accept, origin, withcredentials'
}
})
.success(function(data, status, headers, config) {
// handle data
})
.error(function(data, status, headers, config) {
// handle error
});
return deferred.promise;
}
上面的代碼工作確定:
的問題開始,當我在上面的POST請求體發送一些數據。
...
$http({
method: 'POST',
withCredentials: true,
url: "http://domain.name/app/someURL",
headers:{
'Accept':'application/json',
'Content-Type':'application/json; charset=utf-8',
'Access-Control-Request-Headers': 'X-Requested-With, content-type, accept, origin, withcredentials'
},
data: '{}'
})
.success(...
上面的代碼無法在PRELIGHT要求:
貌似服務器,因爲會話cookie是不是出於某種原因開始發送一個新的會話。無論如何,我覺得我錯過了一些非常簡單的東西,一些標題或類似的東西... 任何想法,讚賞。提前致謝。
這似乎是跨域調用的問題。如果您所調用的網址與您的調用腳本位於同一個域中,則AJAX調用僅發送Cookie。 –
是的,絕對是一個CORS電話。它的作品,直到你添加正文請求... –