【问题标题】:Ajax GET with Authorization header [duplicate]带有授权标头的 Ajax GET [重复]
【发布时间】:2015-10-20 08:58:36
【问题描述】:

我使用 Chrome 扩展 Postman 为带有适当标头的 POST 和 GET 请求生成代码,但经过数小时的处理后,我发现我需要帮助。它在 Postman 中完美运行,但它提供的 Javascript 代码有些错误。

如果我在没有 Authentication 标头的情况下发出请求,我会得到 GET 401 - Unauthorized。

如果我使用 Authentication 标头发出请求,我会得到一个 OPTIONS 401 - Unauthorized。

        $.ajax(
        {
        "async": true,
        "crossDomain": true,
        "url": "http://mywebservice.com/example.php?key=myValue",
        "method": "GET",
        "headers": 
            {
                "authorization": "Basic YWRtaW39NjU1YzVlMWM="
            }
        })

谁能解释为什么我在使用正确的授权标头时会得到 401 选项?我也尝试过使用btoa(username + ":" + password) - 结果相同。

【问题讨论】:

    标签: javascript ajax http postman


    【解决方案1】:

    浏览器阻止您发出跨域请求以保护您免受安全漏洞的侵害。
    (这在 postman 中不会发生,因为 postman 是一个浏览器扩展,因此具有与标准网页不同的权限。)

    有几种方法可以解决这个问题:
    1. 如果两个域都在您的控制之下,则使用 Access-Control-Allow-Origin HTTP header
    2.使用jsonp制作 通话

    【讨论】:

    • 您不能使用 JSONP 设置自定义标头。使用 Access-Cointrol-Allow-Origin 不会阻止发出 OPTIONS 请求。
    • 非常感谢gillyb!我添加了“dataType”:“jsonp”,它现在完美运行!非常感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2015-04-19
    • 2014-12-25
    • 1970-01-01
    相关资源
    最近更新 更多