0

「Access-Control-Allow-Origin で許可されていない」という質問がたくさんあることは知っています。エラー。

しかし、私はそれらのいくつかを試しましたが、成功しませんでした。:(

いくつかの予定:

  • dev-tools-tab 拡張機能を構築しようとしています
  • 例のようにflickr APIに触れることができます
  • ローカルホストにアクセスできません

すでにいくつかの許可ワイルドカードを試しました

http://localhost/
http://*/
*://*/

パック済みおよびアンパック済みの拡張機能を既に試しました

現在、manifest.json は

"version": "0.0.1",
"manifest_version": 2,
"devtools_page": "components/devtools.html",
"permissions": [
    "http://*/"
]

devtools.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <script src="../js/devtools.js"></script>
</body>
</html>

そして、devtools.js

(function (window) {
"use strict";
var xhr1, xhr2, url;
xhr1 = new window.XMLHttpRequest();
xhr2 = new window.XMLHttpRequest();
xhr1.onreadystatechange = function () {
    if (this.readyState === 4) {
        console.log('flickr ok');
    }
};
xhr2.onreadystatechange = function () {
    console.log(this.readyState);
    if (this.readyState === 4) {
        console.log(this.responseText);
    }
};
url = 'https://secure.flickr.com/services/rest/?' +
          'method=flickr.photos.search&' +
          'api_key=90485e931f687a9b9c2a66bf58a3861a&' +
          'text=' + encodeURIComponent('cats') + '&' +
          'safe_search=1&' +
          'content_type=1&' +
          'sort=interestingness-desc&' +
          'per_page=20';
xhr1.open('get', url, true);
xhr1.send();
url = 'http://apache.local';
xhr2.open('get', url, true);
xhr2.setRequestHeader('Origin', url);
xhr2.send();

Chrome コンソール出力:

1 devtools.js:12
Refused to set unsafe header "Origin" devtools.html:1
XMLHttpRequest cannot load http://apache.local/. Origin chrome-extension://nafbpegjhkifjgmlkjpaaglhdpjchlhk is not allowed by Access-Control-Allow-Origin. devtools.html:1
4 devtools.js:12
flickr ok devtools.js:8

Chrome バージョン: 28.0.1500.20 dev

アドバイスをありがとう。

4

1 に答える 1

1

私はそれを持っている!

実際、問題は、devtools ページで XHR リクエストを実行しようとしていて、ポップアップ ページのようにクロスオリジン アクセス ポリシーをバイパスする権限がないように見えることです。

Devtools タブの試行も失敗します。

編集

ステージ許可関連です。ワイルドカード許可ではありません。私が言ったように、私はいくつかのドメインでクエリを実行することができましたが、それらを許可配列に明示的に持っていませんでした。

問題は、実行中のスクリプトの種類にあります。

同じスクリプトをポップアップとして使用すると、問題なく動作します。だから、私も成功したバックグラウンドスクリプトとして試しました! 私は devtools_page と関連するものがそのような権限を持っていないという問題に直面していました...

開発者ツール ウィンドウ内の拡張ページで使用できる API には、上記のすべての devtools モジュールと chrome.extension API が含まれます。他の拡張機能 API は開発者ツール ページでは使用できませんが、コンテンツ スクリプトで行われる方法と同様に、拡張機能のバックグラウンド ページにリクエストを送信することでそれらを呼び出すことができます。

http://developer.chrome.com/extensions/devtools.html

そのレベルのスクリプトは、非明示的なクロス xhrs を拒否します。

リクエストをバックグラウンド スクリプトに入れ、メッセージ apiを使用する際の問題を解決しました。

ありがとうございました!

于 2013-05-23T23:59:29.433 に答える