以json形式获取post-response

Get post response as json

本文关键字:获取 post-response json      更新时间:2023-09-26

在开始之前,我想对我的英语说声抱歉,这不是我的母语。

我正在尝试为GitHub授权设置OAuth2。

我在步骤中卡住了,我应该向github发送POST请求并接收访问令牌。问题是,当我发送POST请求时,浏览器会自动下载带有访问令牌的文件。由于我不能用javascript打开这个文件,我正在尝试获取json作为响应。

在文档中,我可以更改accept头并接收json,但不能编写正确的POST请求。

我已经尝试了很多东西,比如:

$.ajax({
  method: "POST",
  url: "https://github.com/login/oauth/access_token",
  dataType: "application/json"
});

$.ajax({
    url: 'https://github.com/login/oauth/access_token',
     headers: {          
         Accept : "application/json",          
     }     
    data: "data",    
    success : function(response) {  
        console.log(response);  
} })

etc

但我得到了这个错误:

XMLHttpRequest无法加载github.com/login/oauth/access_token。请求的资源上不存在"access Control Allow Origin"标头。原点'http://braga.fedyunin.com.ua因此不允许访问。响应的HTTP状态代码为404。

在谷歌上找不到任何有用的信息,所以我不得不在这里注册。谢谢你的帮助。

阅读https://developer.github.com/v3/在一节中:跨来源资源共享

我也尝试了同样的事情,但由于GitHub API的响应中缺少Access-Control-Allow-Origin头,所以也失败了。我联系了GitHub的支持人员,发现了问题所在。

它不起作用,因为您试图从web应用程序使用OAuth,而GitHub API不支持该应用程序。当您以这种方式进行身份验证时,您的client_id和client_secret必须位于网页中的某个位置,并与POST请求一起发送。整个请求,包括您的client_secret,都可以使用Firebug或类似工具查看。因为公开client_secret不是一个好主意,所以GitHub API不会返回Access-Control-Allow-Origin头,从而阻止您检索令牌。

您必须从服务器端发出POST并以这种方式获取令牌。当您这样做时,client_secret在您的服务器上,而不是在人们的浏览器中。

从您的站点到github.com的Ajax请求失败,因为浏览器对xhr请求遵循同源策略。这意味着xhr请求只能针对同一来源上的资源。为了允许跨源请求,服务器需要列出可以访问特定资源的域。

在您的情况下,要做到这一点,您需要在github帐户上将您的网站注册为应用程序,方法是在此处输入详细信息:https://github.com/settings/applications/new