クロスオリジンリクエストを行う必要があるプロジェクトに取り組んでいますが、純粋なWebページでこれを許可する方法はないようです。
Chrome拡張機能は、次の例のように、リクエストしたいドメインへのアクセス許可をリクエストするだけです。
"permissions": [
"http://www.google.com/",
"https://www.google.com/"
]
http://developer.chrome.com/extensions/xhr.html
https://developers.google.com/chrome/apps/docs/no_crxを見つけました。これは私が探していたものに近いように見えましたが、許可される権限は「geolocation」、「notifications」、「unlimitedStorage」のみです。
リクエストしたいドメインに設定できるHTTPヘッダーAccess-Control-Allow-Originがありますが、それらは私の管理下にないため、実用的ではありません。
同様に、Content-Security-Policy:connect-src https://www.google.com ; 主に、アクセスを開くのではなく、アクセスをさらに制限するために使用されます。
http://www.html5rocks.com/en/tutorials/security/content-security-policy/
セキュリティ上の懸念は理解していますが、クイック検索を行うと、プロキシサーバーを作成することでこれを回避できることがわかります。同等のリクエスト、つまりユーザーのセッション/ Cookie情報(シークレットモードなど)のないリクエストを許可するのは理にかなっていますか?または、ページが拡張機能と同じ方法で許可を要求できるメカニズムはありますか?このようなものをブラウザ固有の方法で停止する必要があるため、やや逆行しているようです。
webspeech api(またはgetUserMedia)がマイクを使用するためのアクセスを要求するのと同じように。
何か考えや私が見逃したことはありますか?
編集:私はこれを他の場所に投稿して得ました:
自分の管理下にあるドメインからリクエストを行う場合は、別のドメインのデータにアクセスするために使用できる他のオプション(JSONPなど)があります。または、iframeをロードし、postMessage()を使用してコンテンツを操作することもできます。通信しようとしているドメインがそのデータを共有することを強制するツールもたくさんあります。
自分:
JSONPは、JSONを提供するデータソースのソリューションのように見えますが、それが私の全体的な問題を解決するかどうかはわかりません。さまざまなソースからデータを取得して、結果の表示と情報の解釈の両方を実行してアクションを実行するツールを作成しようとしています。1つのクエリは、jsonpまたは他の公式メソッドで許可されるGoogle検索である可能性がありますが、他のWebページからデータを取得する場合は機能しません。行われるすべての要求はユーザーセッション情報を必要としないため、プロキシは機能しますが、遅延とメンテナンスのコストが追加されます。
postMessage()インターフェースは、リスナーを実装するために要求されているページを必要としますか?
これまでのところ、「最良の」解決策は、リクエストを行い、結果をページと通信できる特権環境で実行されるコンパニオン拡張機能を備えているようです。このツールは、Webページ内で機能する他のさまざまなことを実行するため、拡張機能を実行するオプションを備えたWebページとしてプライマリ環境を残したいと思います。