0
我正在使用angular將文件發佈到Amazon S3存儲桶。爲了讓桶接受請求,我試圖向它添加一個Upgrade-Insecure-Requests頭,當我這樣做時,請求不再有一個主體。將標題添加到角度POST會導致請求正文爲空
此代碼正確地發送請求主體:
$http({
method: "POST",
url: responseData.url,
data: postData,
headers: {"Content-Type": undefined},
transformRequest: angular.identity
})
儘管此代碼導致一個空的請求主體:
$http({
method: "POST",
url: responseData.url,
data: postData,
headers: {"Content-Type": undefined,
"Upgrade-Insecure-Requests": "1"},
transformRequest: angular.identity
})
可能是什麼造成的?
編輯:我發現沒有請求正文的原因是因爲預檢OPTIONS請求正在發送到S3。我在容器中添加了一個CORS策略,允許使用OPTIONS和POST方法,所以現在OPTIONS請求可以正確返回。
但是,在接收到OPTIONS響應之後,即使POST應符合要求,也不會進行POST。
這些是OPTIONS的請求報頭:
OPTIONS/HTTP/1.1
Host: tesssssst-aws-cms.s3.amazonaws.com
Connection: keep-alive
Access-Control-Request-Method: POST
Origin: https://s3.amazonaws.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Access-Control-Request-Headers: cache-control, upgrade-insecure-requests
Accept: */*
Referer: https://s3.amazonaws.com/tesssssst-aws-cms/HTML/upload.html
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: en-GB,en;q=0.8,en-US;q=0.6,ms;q=0.4,th;q=0.2
這些是OPTIONS的響應報頭:
HTTP/1.1 200 OK
x-amz-id-2: SQaOyODgprPIRe8uq3YEZBDXzVcUjyYc2GpLsZwmIwdII+FVIgOGQXokIzXTsBcIaOITgwrk8Zw=
x-amz-request-id: 07EE6477F2B3273C
Date: Thu, 08 Sep 2016 07:12:58 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, GET, POST
Access-Control-Allow-Headers: cache-control, upgrade-insecure-requests
Access-Control-Max-Age: 3000
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
Content-Length: 0
Server: AmazonS3
的app.config([ '$ httpProvider',函數($ httpProvider){$ httpProvider.defaults.headers.common [ 「X-請求-隨着」] = '的XMLHttpRequest'; }]); – mehrdad
@mehrdad添加這個會打破頁面上另一個當前正在工作的POST請求。有什麼方法可以專門添加這個請求嗎? –
我也用這個來發送數據到頭部$ http({url:$ scope.path +'/ Account/EditUserAngular', method:'Post', headers:{ 'RequestVerificationToken':$ scope.antiForgeryToken, 'IsMobile': 「真」, 「X-要求,用」: 「XMLHttpRequest的」 }, 數據:{ 模型:$ scope.UserEditViewModel, }} ) – mehrdad