0

URL へのクロスドメイン ファイア アンド フォーゲット呼び出しを行うための単純な JavaScript システムを作成しようとしています。この URL では status:200 以外は何も表示されないので、すべてが順調であるため、最善の解決策を見つけようとしています。

呼び出している URL は制御できないため、JSONP ソリューションを実装したり、ヘッダーに「Access-Control-Allow-Origin」を設定したりすることはできません。

また、jQuery に依存せずにこれを書くように依頼されました。

私が調査しているそのような解決策の 1 つは、URL に src 属性を持つ新しいスクリプト要素を作成することです。ただし、これらの呼び出しが多数行われるため、呼び出しごとにクリーンアップすることも必要です。

これが私がこれまでに考えていることです:

var fireAndForgetGETRequest = function(url) {
    var head = document.getElementsByTagName("head")[0];
    var scriptTag = document.createElement("script");
    scriptTag.type = "text/javascript";
    head.appendChild(scriptTag);

    scriptTag.src = url;

    setTimeout(function() {
        head.removeChild(scriptTag);
        scriptTag = null;
    }, 5000);
};

これにより、任意の時間 (この場合は 5 秒) 後にスクリプト タグがクリーンアップされます。

これは合理的な解決策でしょうか?クリーンアップする前に待つ必要がありますか、それともリクエストはすぐに行われますか?

JavaScript の達人からの助けをいただければ幸いです :)

4

1 に答える 1

8

応答を気にしないのであれば、なぜ XSS 攻撃にさらされるのでしょうか? イメージ リクエストを介して GET リクエストを送信します。

function sendData(url) {
    function remove() { 
        img = null; 
    }
    var img = new Image();
    img.onerror = remove;
    img.onload = remove;
    img.src = url;   
}
于 2013-01-17T14:13:38.660 に答える