【问题标题】:Ajax call to retrieve auth code using oath2使用 oauth2 检索身份验证代码的 Ajax 调用
【发布时间】:2019-11-09 19:43:48
【问题描述】:

我正在使用一些 API 点设置来获取数据。我必须点击的第一个端点返回一个身份验证代码,该代码将传递到其余的调用标头中。

我似乎在使用ajax 打第一个电话时遇到问题,它与postman 配合得很好。我不断收到错误消息,但没有消息。

我是否正确设置了这个?它使用的是 oauth2,我对此没有任何经验。

一个jsfiddle示例https://jsfiddle.net/7f5dgn08/

var url = 'http://webaddress';

 $.ajax({
    type: "oauth2",
    url: url,
    cache: false,
    async: true,
    crossDomain: true,
    headers: {
        username: "username",
        password: "pass"
    },
    dataType: "json",
     success: function (data) {

        localStorage.setItem('aCode', JSON.stringify(data))
    },
     error: function (jqXHR, exception) {
        console.log(jqXHR.responseJSON);
    }
 });

【问题讨论】:

  • 我认为你丢失了一些数据,谷歌 oAuth2,你会看到你需要传递 grant_type(可能是密码)和 client_id。通过有效负载传递它们,我认为您不应该通过标头传递它们。类型也应该是 POST
  • 您指的是哪个 API?参数“type”是“method”的别名,应该类似于“post”或“get”。如果您在客户端请求访问令牌,您应该知道自己在做什么,因为您会将所有数据公开给任何有权访问的用户。
  • @Verthosa,您的意思是在数据中传递它们?我正在使用邮递员来尝试指导我(因为我没有通过那里取回身份验证代码),并且它具有用于授权类型的单独字段以及用户名和密码。所以我假设它们不一样。我确实添加了授权类型,但似乎没有帮助。我在这里使用 oath2 类型的唯一原因是因为我尝试了任何事情。如果您查看 jsfiddle,您会看到我将其作为帖子发布在那里。
  • @ju_,我正在使用内部 api。如果您查看 jsfiddle,您会发现我将类型作为 post 存在。我只是在这里有所不同,因为我正在尝试任何事情来让它发挥作用。
  • 内部 API 是什么意思?您是否自己实现/集成了 oauth 服务器?如果您不提供信息,我们将无法提供帮助;-)

标签: javascript ajax oauth-2.0


【解决方案1】:

如果它在邮递员中有效,但在浏览器中无效,则可能是发生了 CORS 错误。如果调用的Request MethodPOSTOPTION,请在浏览器的开发工具中查看。

如果动词是 OPTION,您可能会收到一个没有响应正文的错误,但您还会获得与 CORS 问题相关的登录控制台。

如果错误与 CORS 相关,您必须将 CORS 策略添加到您的端点,并在 响应标头中添加一个 Access-Control-Allow-Origin 标头,该标头的值为您的前端所在的地址。

【讨论】:

  • 而且浏览器很可能也会屏蔽非https请求
猜你喜欢
  • 2014-09-15
  • 1970-01-01
  • 2019-10-25
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 2021-05-12
  • 2014-03-14
相关资源
最近更新 更多