[英]AngularJS and Cross Domain POST
我有一個關於帶有 HTTP 授權標頭的 CORS 請求的問題:
在我看來,Web 瀏覽器沒有通過 POST 請求發送 Authorization 標頭,有什么辦法可以解決這個問題嗎?
這是我的角度代碼:
var app = angular.module('app', [])
.config(['$httpProvider', function($httpProvider) {
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}]);
app.controller('ctrl', function ($scope, $http) {
$scope.insert = function () {
$http.post('http://my.api.com/Insert',
{
headers: {
'Authorization': 'Basic dGVzdDp0ZXN0',
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
'Code': 'test data'
},
withCredentials: true
});
};
});
在服務器端,我的 web.config 中有這個
<httpProtocol >
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With" />
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
</httpProtocol>
您錯誤地使用了$http.post
。 第二個參數是你需要發送到服務器的數據,你不能像這樣設置標題。 在您的情況下,它會將整個對象作為JSON 有效負載發送
試試這個:
$http({
url:'http://my.api.com/Insert',
method:"POST",
headers: {
'Authorization': 'Basic dGVzdDp0ZXN0',
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
'Code': 'test data'
}
});
withCredentials - {boolean} - 是否在 XHR 對象上設置 withCredentials 標志。 有關更多信息,請參閱帶有憑據的請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.