1

私はajaxを初めて使用し、JavaScriptがブラウザーでどのように実行されるかを理解するのに助けが必要です。私が解決しようとしている問題は、2番目のjavascript(このページに挿入)を使用してajax応答をインターセプトすることです。

ユーザーが最初にページをロードするときに、独自のJavaScriptを追加して、サーバーの応答を(プロキシ経由で)変更します。後で通常の操作中にユーザーがこのページからコンテンツを取得しようとしたときに、挿入されたjavascriptを使用して特定のhttpヘッダーまたはコンテンツが含まれているときにこの応答をインターセプトしてポップアップを表示できるようにしたいと思います。

これも実現可能ですか?他の関連する質問を確認したところ、これはブラウザ拡張機能(コンテンツスクリプトなど)を使用して実行できることがわかりましたが、ページ自体にjavascriptインジェクションを使用してこれが可能かどうかを知りたいです。

4

1 に答える 1

3

AJAX応答をどのように傍受するつもりですか?XMLHttpRequestJavaScriptを使用してそれが可能であると私が思う唯一の方法は、元のオブジェクトにアクセスできるかどうかです。検討:

var request = new XMLHttpRequest;
request.onreadystatechange = handler;
request.open("GET", "/somefile.php", true);
request.send();

function handler() {
    if (request.readyState == 4 && request.status == 200) {
        // do something
    }
}

このAJAX応答をインターセプトするには、request.onreadystatechangeイベントハンドラーをオーバーライドする必要があります。これを行うには、requestオブジェクトにアクセスする必要があります。

挿入されたスクリプトを使用して応答をインターセプトしようとしているため、スクリプトはグローバル変数にのみアクセスできます。つまり、requestオブジェクトがグローバル変数である場合にのみ、AJAX応答をインターセプトできます。

それでも、注入したスクリプトがAJAXリクエストの前、後、または最中に実行されることを確信することはできません。あなたができる最善のことはreadyState、リクエストをチェックし、手遅れになった場合は単にあきらめることです。

XSS攻撃を開始しようとしている場合、AJAX応答を傍受することは間違いなく実行可能ではありません。乾杯。

于 2012-06-02T02:53:09.533 に答える