无法在angularjs中设置自定义标头

时间:2016-10-12 08:55:32

标签: angularjs http-headers

我正在进行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

1 个答案:

答案 0 :(得分:0)

这是因为您正在查看OPTIONS预检请求,而不是实际的GET请求。在您的情况下,我想主机“ 192.168.3.239:8082”与从其提供Web应用程序的主机不同。这将导致浏览器在发出实际的GET请求之前发出CORS OPTIONS预检。在那里,您的自定义标头包装在Access-Control-Request-Headers标头中,没有实际值。 here描述了浏览器发出OPTIONS预检的场景。

请确保启用CORS,以便您可以检查实际的GET请求,然后在其中找到自定义标头以及相应的值。