【问题标题】:$http.post - Request header field Authorization is not allowed by Access-Control-Allow-Headers$http.post - Access-Control-Allow-Headers 不允许请求标头字段授权
【发布时间】:2016-04-06 14:27:40
【问题描述】:

我正在使用角度 js。 我有一个表单,要求用户输入 URL 基本身份验证详细信息,即 HTTP POST 的用户名和密码(如 PostMan)

我需要检查凭据是否有效。

我想出了以下代码:

$http({method: 'POST', url: $scope.serviceConfig.url, headers: {
    'Authorization': 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
})
    .success(function(res)
    {
        console.log(res);
    })
    .error(function(res)
    {
        console.log(res);
    });

我收到以下错误:

无法加载https://posttestserver.com/post.php。请求头域 Access-Control-Allow-Headers 不允许授权 预检响应。

  1. 将 Auth base64 放入标头中是否正确?
  2. 这是服务器的问题还是我做错了什么?
  3. 还有其他方法可以测试凭据吗?
  4. 还有其他服务器可以测试 Auth 吗?我找到了https://httpbin.org/,但它只支持 HTTP GET

【问题讨论】:

    标签: jquery angularjs http http-headers


    【解决方案1】:

    您确实以正确的方式设置了授权标头。但是,postservertest.com 已禁止通过 Access-Control-Allow-Headers 使用该标头:

    $ HEAD http://posttestserver.com
    200 OK
    Connection: close
    Date: Wed, 06 Apr 2016 15:26:58 GMT
    Server: Apache
    Vary: Accept-Encoding
    Content-Type: text/html; charset=UTF-8
    Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
    Access-Control-Allow-Origin: *
    

    总而言之,您的代码是正确的。只是服务器不愿意接受你的请求。你可以试试requestb.in

    【讨论】:

    • 你的意思是requestb.in 对吧?如果是,请编辑。我尝试编辑您的,但更改至少需要 6 个字符
    • 你能告诉我这个输出是什么吗?
    • 啊,对不起。真的是requestb.in。该输出来自一个名为HEAD 的小实用程序,它针对给定的URL 发出HEAD 请求。 curl -I 应该达到同样的效果。
    • 我遇到了类似的错误:无法加载 requestb.in/16jgni71。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'localhost:3000' 因此不允许访问。
    • 但是当我使用邮递员发布时,我收到OK 响应。并且在 requestbin 中可以看到 auth 标头。但不是来自我的代码。从我的代码发布时看到Access-Control-Request-Headers: accept, authorization
    猜你喜欢
    • 2017-12-19
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2016-05-15
    • 2013-07-05
    • 2017-10-20
    相关资源
    最近更新 更多