我正在进行http get调用,并希望在标头中设置一些自定义属性,但我无法在后端看到这些属性,甚至在http请求中也看不到。这是我使用的代码
app.controller("BranchController", function ($scope, $http, $rootScope){
var req = {
method : 'GET',
url : 'http://192.168.3.239:8082/build-api/v1.1/builds/getbranch',
headers: {
"username": "abcd",
"password" : "hhhh@@@@######"
}
}
$http(req).
success(function (data, status, headers, config) {
$scope.branchs = data;
}).
error(function (data, status, headers, config) {
console.log('Api call failed', status)
});
});
这是http请求标头
OPTIONS /build-api/v1.1/builds/getbranch HTTP/1.1
Host: 192.168.3.239:8082
Accept: */*
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Access-Control-Request-Headers: password, username
Access-Control-Request-Method: GET
Origin: http://localhost:63342
Referer: http://localhost:63342/Build_Web/BranchList.html?_ijt=u6e7vvngu1n5o4a1doc1jig2g4
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36
答案 0 :(得分:0)
这是因为您正在查看OPTIONS预检请求,而不是实际的GET请求。在您的情况下,我想主机“ 192.168.3.239:8082”与从其提供Web应用程序的主机不同。这将导致浏览器在发出实际的GET请求之前发出CORS OPTIONS预检。在那里,您的自定义标头包装在Access-Control-Request-Headers标头中,没有实际值。 here描述了浏览器发出OPTIONS预检的场景。
请确保启用CORS,以便您可以检查实际的GET请求,然后在其中找到自定义标头以及相应的值。