[英]Get post response as json
在開始之前,我想對我的英語說聲抱歉,它不是我的母語。
我正在嘗試為 GitHub 授權設置 OAuth2。
我堅持在這一步,我應該向 github 發送 POST 請求並接收訪問令牌。 問題是當我發送 POST 請求時,我的瀏覽器會自動下載帶有訪問令牌的文件。 由於我無法使用 javascript 打開此文件,因此我正在嘗試獲取 json 作為響應。
在文檔中寫道,我可以更改接受標頭並接收 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);
} })
等等
但我收到此錯誤:
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 支持並找出了問題所在。
它不起作用,因為您試圖從 GitHub API 不支持的 Web 應用程序使用 OAuth。 當您以這種方式進行身份驗證時,您的 client_id 和 client_secret 必須位於網頁中的某個位置並與 POST 請求一起發送。 可以使用 Firebug 或類似工具查看整個請求,包括您的 client_secret。 因為公開您的 client_secret 是一個壞主意,GitHub API 不會返回 Access-Control-Allow-Origin 標頭,從而阻止您檢索令牌。
您必須從服務器端發出 POST 並以這種方式獲取令牌。 當您這樣做時,client_secret 在您的服務器上,而不是在人們的瀏覽器中。
從您的站點到 github.com 的 Ajax 請求失敗,因為瀏覽器對 xhr 請求遵循相同的源策略。 這意味着只能對同一來源的資源發出 xhr 請求。 為了允許跨源請求,服務器需要將可以訪問特定資源的域列入白名單。
在您的情況下,為此,您需要通過在此處輸入詳細信息將您的站點注冊為您的 github 帳戶上的應用程序: https : //github.com/settings/applications/new
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.