4
我在使用AngularJS中的$ http提供程序對需要身份驗證的.NET後端進行API調用時遇到問題。 .NET後端服務期望在調用中包含「.ASPXAUTH」和「__RequestVerificationToken」cookie。
當我使用普通的JS和.ajax時,在beforesend塊中傳遞cookies工作。
$.ajax({
url: SERVER_URL + '/api/accounts',
type: 'GET',
dataType: 'json',
crossDomain: true,
xhrFields: {
withCredentials: true
},
success: function(data, status){
// ...
},
error: function (request, textStatus, errorThrown) {
// ...
},
beforeSend: function (req) {
req.setRequestHeader("Cookie", REQUEST_VER_TOKEN);
req.setRequestHeader("Cookie", ASPXAUTH_TOKEN);
}
});
在AngularJS,我試着在設置它的$ httpProvider並沒有成功的$ HTTP調用:
(配置塊):
// ...
app.config(function ($routeProvider, $httpProvider) {
$httpProvider.defaults.headers.common[".ASPXAUTH"] = '....';
$httpProvider.defaults.headers.common["__RequestVerificationToken"] = '....';
$httpProvider.defaults.useXDomain = true;
// ...
(在$ http call):
$http({ url: 'http://SERVER_URL/api/accounts', method: 'GET',
{headers: {
'__RequestVerificationToken': '....',
'.ASPXAUTH': '....'
}}
})
.success(function(data, status, headers, config) {
// ...
})
.error(function (data, status, headers, config) {
// ...
});
我得到了401未經授權的錯誤。如果從服務器代碼中刪除授權塊,則代碼無需插入標頭即可工作。如何在AngularJS中模擬相同的beforesend塊,並確保在API調用期間cookie傳遞給服務器?
您是否找到解決此問題的方法? –