如何使用 jQuery (localhost) 获取 oauth access_token?

Posted

技术标签:

【中文标题】如何使用 jQuery (localhost) 获取 oauth access_token?【英文标题】:How to get oauth access_token with jQuery (localhost)? 【发布时间】:2019-11-14 11:00:33 【问题描述】:

我正在尝试使用 jQuery 获取 access_token。问题是,我无法获得该令牌(服务器在 localhost 上运行)。服务器工作正常(我用邮递员试过),但我不能用 jQuery 得到它。 浏览器在点击按钮后写入。

来自“http://localhost:8080/oauth/token?callback=jQuery34105901959820360243_1562175129954&grant_type=password&client_id=my-client&client_secret=my-secret&username=test%40seznam.cz&password=Peter&_=1562175129955”的资源由于 MIME 类型(“application/json”)不匹配(X-Content-Type-Options: nosniff)而被阻止。

获取access_token的jQuery函数

function authenticateUser(email, password) 
    var body = 
        grant_type: 'password',
        client_id: 'my-client',
        client_secret: 'my-secret',
        username: "test@seznam.cz",
        password: "Peter"
    ;


    $.ajax(
        url: 'http://localhost:8080/oauth/token',
        crossDomain: true,
        type: 'POST',
        dataType: 'jsonp',
        contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
        header: "Access-Control-Allow-Origin": "*",
        data: body,
        complete: function(result) 
            alert(result);
        ,

        success: function(result) 
            alert(result + " OK!");
        ,

        error: function(result) 
            alert(result + " CHYBA");
        ,
    );
    return true;

【问题讨论】:

【参考方案1】:

如果 javascript 文件由提供令牌的同一服务器提供服务,则无需在您的 jquery ajax 代码中使用完整的 url(也无需指明 crossDomain=true)。您的服务器似乎也期待 json 内容类型而不是 url 编码

使用

        url: '/oauth/token',
        crossDomain: false,
...
        contentType: 'application/json; charset=UTF-8',

提出请求


编辑

试试这个方法:

   $.post("/oauth/token",body,
  function(data, status) 
    alert("Data: " + data + "\nStatus: " + status);
  );

希望对你有帮助

【讨论】:

/oauth/token 写了 CORS 问题。当我使用整个网址时,它会返回: "error":"method_not_allowed","error_description":"请求方法 'GET' 不支持" 您最近是否更改过代码?该错误听起来就像您在期待另一个动词(如 POST 或 PUT)时对服务器执行 GET 请求。服务器是否执行另一个请求? 我已经编辑了答案以包含 $.post jquery 方法示例。试试看 我尝试了不需要 access_token 的端点并且它可以工作......但不幸的是,不是为了获得那些令牌:(我尝试了你的解决方案,但我再次遇到了 CORS 问题......:/

以上是关于如何使用 jQuery (localhost) 获取 oauth access_token?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 获取客户端 IP 地址

Jquery 无法在 Localhost 上使用 Xampp 服务器

通过我的智能手机连接到localhost / index.php [关闭]

如何使用 jQuery 设置图像 src

jsp页面如何获js中if语句的变量值

如何单击以使用 jQuery maphilight 更改突出显示颜色