簡體   English   中英

Chrome中的錯誤:“ Access-Control-Allow-Origin不允許原始文件://”

[英]Error in Chrome: “Origin file:// is not allowed by Access-Control-Allow-Origin”

我正在為需要訪問minus.com的Chrome擴展程序編寫代碼,該擴展程序使用oAuth 2.0進行身份驗證,因此我編寫了一個javascript文件“ test.js”,然后將其包含在HTML文件“ test.html”中,然后加載Chrome中的“ test.html”以測試用於身份驗證的javascript代碼。

“ test.js”的結構如下所示:

function Ajax(url, options) {

// some function content

    // Sending data
    if (options.method === "POST" && (options.params || options.binaryData)) {
        if (options.binaryData) {
            xhr.sendAsBinary(options.binaryData);
        } else {
            xhr.send(hashToQueryString(options.params));
        }
    } else {
        xhr.send(null);
    }

    return xhr;
}

function refreshToken(refresh_token) {
    var params = {
        'grant_type': 'refresh_token',
        'client_id': API_KEY,
        'client_secret': API_SECRET,
        'refresh_token': refresh_token,
        'scope': 'read_all modify_all upload_new'
    }

    new Ajax("https://minus.com/oauth/token", {
        params: params,

        onSuccess: function(response) {
            console.log(response.access_token);
        },

        onError: function(response) {
            console.log('error: wrong_token');
        }
    });               
}

refreshToken();

當我在Chrome中加載“ test.html”以測試“ test.js”時,它在控制台中提示錯誤,並說“ XMLHttpRequest無法加載https ://minus.com/oauth/token?...源文件: // Access-Control-Allow-Origin不允許。” 我嘗試使用選項“ --allow-file-access-from-files”或“ --disable-web-security”啟動Chrome,但是並不能解決問題。 但是,如果我在“ Ajax”功能中注釋了“發送數據”部分,則沒有錯誤。

有人知道這里發生了什么嗎?

謝謝!

要具體說明您的問題:您需要將要能夠跨域訪問的主機添加到擴展清單中:

http://code.google.com/chrome/extensions/xhr.html

{
  "name": "My extension",
  ...
  "permissions": [
    "https://*.minus.com/"
  ],
  ...
}

編輯

附帶一提,當我有大量的擴展程序處於活動狀態時,有時會在chrome中出現奇怪的跨域錯誤。 然后,我必須至少禁用幾個,刷新擴展名,然后它才能工作-有時重新啟動chrome。

您可以通過使您的應用程序成為支持跨域調用的打包應用程序來解決此問題。 托管的應用程序則沒有。

您可能還想閱讀chrome擴展中的跨域XMLHttpRequest

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM