【问题标题】:JQuery $.getJSON with username and password basic authentication?带有用户名和密码基本身份验证的 JQuery $.getJSON?
【发布时间】:2016-04-19 17:42:37
【问题描述】:

我想要这样的东西:How to use Basic Auth with jQuery and AJAX?

在问题中,他们解释了如何使用身份验证

我需要对服务器使用 jQuery $.getJSON 而不是 $.ajax 请求,因为它不支持跨站点。 而且我还需要提交用户和密码。 有没有办法在$.getJSON 中将用户名和密码作为参数提交,而不用像https://user:password@myserver.com 这样的URL 发送?

【问题讨论】:

  • $.ajax 在使用 JSONP 时不支持 CORS,它使用 JSONP 而不是 CORS。如果您想发出跨域请求,则服务器需要授予您使用 CORS 的权限,或者使用 JSONP 破解相同的源策略。如果您使用 JSONP,则无法设置任意 HTTP 标头。

标签: javascript jquery ajax getjson


【解决方案1】:
$.getJSON("url", { user: "name", password: "123456" })
    .done(function(json) {
        console.log("Store User autthentication successfully");
    })
    .fail(function(jqxhr, textStatus, error) {
    });

【讨论】:

    【解决方案2】:

    $.getJSON 是 $.ajax 的简写,所以确实你可能需要 ajax。你可以在http://api.jquery.com/jquery.ajax/上看到如何设置headers

    $.ajax(url, {crossDomain:true, headers:{'X-My':'Foo'}})
    

    这可能与Pass request headers in a jQuery AJAX GET call 重复

    【讨论】:

    • 它不支持跨域请求,所以我需要使用 $.getJSON。有了 $.Ajax 我就知道怎么用了
    • 正如我告诉你的,getJSON 已经调用了 ajax,请参阅 stackoverflow.com/questions/5922175/jquery-getjson-vs-ajax-json
    • @DennisKonoppa — 查看我对原始问题的评论。您似乎将 getJSON 函数与 JSONP 以及跨域请求与 CORS 的想法混淆了。
    • 设置crossDomain:true 通常是没有意义的。仅当您向 same 源发出 XMLHttpRequest(即不是 JSONP)请求,然后对不同源执行 HTTP 重定向 时才重要。
    猜你喜欢
    • 2017-06-26
    • 1970-01-01
    • 2014-05-10
    • 2015-01-17
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    相关资源
    最近更新 更多