Javascript跨域的即发即弃请求

时间:2013-01-17 14:07:17

标签: javascript ajax

我正在寻找一个简单的javascript系统,用于对网址进行跨域点火和忘记调用。由于这个网址除了状态之外没有给我任何其他信息:当一切都很好时,我会尝试提供最佳解决方案。

我正在调用的URL不受我的控制,因此实现JSONP解决方案或在标题中设置“Access-Control-Allow-Origin”不是一种选择。

另外,我被要求在不依赖jQuery的情况下编写它。

我正在调查的一个这样的解决方案涉及为url创建一个带有src属性的新脚本elelement。但是,由于会有很多这样的电话,我还想在每次通话后进行清理。

这是我到目前为止的想法:

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专家:)

1 个答案:

答案 0 :(得分:8)

如果您不关心响应,为什么要打开自己的XSS攻击?通过图像请求发送GET请求。

function sendData(url) {
    function remove() { 
        img = null; 
    }
    var img = new Image();
    img.onerror = remove;
    img.onload = remove;
    img.src = url;   
}