【问题标题】:AngularJS can't use Basic AuthenticationAngularJS 不能使用基本身份验证
【发布时间】:2014-11-03 07:35:13
【问题描述】:

我的设置标题有问题。我的js脚本

var invocation = new XMLHttpRequest();
        var url = 'http://example.com/api/auth';
        var handler = [];

        if(invocation) {    
            invocation.open('GET', url, true);
            invocation.setRequestHeader('X-PINGOTHER', "DDD");
            invocation.setRequestHeader('Access-Control-Allow-Origin', "http://localhost");
            invocation.setRequestHeader('Access-Control-Request-Headers', true);
            invocation.onreadystatechange = handler;
            invocation.send(); 
          }

来自萤火虫的标题:

OPTIONS /api/auth HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0  FirePHP/0.7.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: http://localhost
Access-Control-Request-Method: GET
Access-Control-Request-Headers: access-control-allow-origin,x-pingother
x-insight: activate
Connection: keep-alive

如您所见,它总是将 Access-Control-Request-Headers 添加为值,并将 OPTIONS 设置为不 GET。有什么想法吗?

【问题讨论】:

标签: javascript angularjs cross-browser cors


【解决方案1】:

你应该使用AngularJS自带的$http,更好:

$http.defaults.useXDomain = true; //enable cors

$http({
    method: 'GET', 
    url: 'http://example.com/api/auth', 
    headers: {'X-PINGOTHER': 'DDD'}
 });

【讨论】:

  • 这是新东西,但“发送方法”仍然是 OPTIONS 不是 GET 为什么?
【解决方案2】:

好的,它可以工作,但不能使用 GET。 应该是这样的:

$http({
    method: "GET",
    url: "http://example.com/api/auth"
    }).success(function(data) {
        $scope.user = data;
    }).error(function(data) {
        console.log("error");
    });

工作示例:

$http.jsonp('http://example.com/api/auth?&callback=JSON_CALLBACK')
        .success(function(data){
            console.log(data);
        }).error (function(data){
            alert("eerrror");
        }); 

它仅适用于 JSONP。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-29
    • 2018-10-24
    • 2015-03-13
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2015-08-12
    相关资源
    最近更新 更多