【问题标题】:Ajax POST to another server - overcoming the cross domain restrictionsAjax POST 到另一台服务器 - 克服跨域限制
【发布时间】:2011-05-07 10:52:44
【问题描述】:

是使用代理实现此目的的唯一正确方法吗?我正在研究 clicktail 克隆(网络用户交互和鼠标跟踪分析),到目前为止,我所拥有的是一个脚本,它将跟踪所有用户交互并将它们发布到我的服务器并保存到数据库,但问题是如果将此脚本添加到将在另一个域上的客户端,则由于跨域脚本限制,Ajax 发布将失败。

通过阅读有关此内容,有一些技巧,但我很想避免它们。似乎代理是解决此问题的唯一方法。但这反过来又给我带来了更大的问题,因为任何希望使用我的 clicktail 克隆的客户除了在其上添加 javascript 之外还必须设置代理。对于拥有 PHP 站点的网站管理员来说,这将是直截了当的,因为我可以提供脚本,他们只是将其放在服务器上,但对于 .net 站点,他们必须将其包含在他们的解决方案中并重新编译,也许我可以提供一个 dll,但即使这样也必须被引用。

我一直在阅读这个 HTML 5 window.postMessage -> 和这个 jquery 插件 http://benalman.com/projects/jquery-postmessage-plugin/ 这看起来不错,我认为我无法使用它来回放捕获的用户交互,使用 Iframe 但它没有,(至少我看不到如何解决跨域 AJAX 发布的问题。 如果你是我的情况,你能发布你可能的解决方案吗?

【问题讨论】:

    标签: javascript jquery ajax xss


    【解决方案1】:

    在您的情况下,跨域 POST 似乎确实是可能的。 这里How do I send a cross-domain POST request via JavaScript? 讨论了使用 Access-Control-Allow-Origin 配置接收服务器的可用性。 之后,您可以通过 jQuery 进行 POST:

    $.ajax({
        type: 'POST',
        url: 'https://to.com/postHere.php',
        crossDomain: true,
        data: '{"some":"json"}',
        dataType: 'json',
        success: function(responseData, textStatus, jqXHR) {
            var value = responseData.someKey;
        },
        error: function (responseData, textStatus, errorThrown) {
            alert('POST failed.');
        }
    });
    

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-20
      • 1970-01-01
      • 2011-02-05
      • 2020-06-18
      • 2020-11-26
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多