2

jQuery Ajax関数を使用してWebページにアクセスしたときにデータをログに記録するスクリプトを自分で作成しました。いくつかの情報を取得し、ローカルの Apache ホストに送信してテキスト ファイルに保存します。

何ヶ月も機能していましたが、この同一生成元ポリシーに関連するエラーが発生し(仕組みとその目的はわかっています)、ブラウザはスクリプトの実行を終了して次のメッセージを表示しています:

The page at https://www.website.com/ displayed insecure content from
http://127.0.0.1:8081/whatever.php

これに続いて:

Refused to connect to connect 'http://127.0.0.1:8081/whatever.php?arguments=1' because it 
violates the following Content Security Policy directive: "connect-src
https://www.website.com/* https://*.website.com/
https://*.website.net xhr: error: SECURITY_ERR: DOM Exception 18 

その最後のドメインは、エラー メッセージで赤色で表示されます。興味深いことに、 Tampermonkeyの JavaScript コードには@includesこれらのドメインがありますが、赤でマークされたドメインはありません。追加してテストしましたが、機能しませんでした。

Google で見つけたすべてのディスカッションでは、このポリシーを無効にする方法が説明されていますが、拡張機能を開発している場合、それは私の場合ではありません。

このコードは私のマシンで実行されるだけです。配布するつもりはまったくなかったので、解決策がブラウザーの構成を直接変更することであっても、どんな解決策も歓迎します。

これが役立つ場合、私は Windows 7 を使用しています。

4

3 に答える 3

6

Tampermonkey BetaGM_xmlHttpRequestは、ページの CSP から独立するように修正しました。
残念ながら、jQuery AJAX リクエストを修正することはできません。これは、どのサイトにアクセスするのかがわからないためです。

接続しているページがFacebookの場合、CSP は Chrome 21-23 にのみ送信され、Chrome 24 には送信されません。したがって、 Tampermonkey の@user-agentタグを使用して Chrome 24 をシミュレートできます。

于 2012-12-12T17:28:56.660 に答える
2

ローカルサーバーで、データの送信先であるCORSwhatever.phpを設定します(つまり、ヘッダーを送信します)。Access-Control-Allow-Origin: *

于 2012-11-21T01:31:28.030 に答える
1

上からは何も必要ありません。あなたのajax呼び出しでしなければならないのは、追加することだけです

script.php?callback=?&your_parameters_here

PHPファイルでは、データを取得するときにこれを追加するだけです:

echo $_GET['callback'].$your_data_here

それで全部です!

于 2012-11-21T02:24:48.853 に答える