Ajax POST到另一台服务器 - 克服跨域限制

问题描述:

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

从阅读这里,有一些黑客,但我很想避免它们。看起来代理是唯一的方法。但是这反过来又给我带来了一个更大的问题,因为任何希望使用我的Clicktail克隆的客户端都必须设置一个代理,并在其上添加javascript。对于一个拥有PHP站点的网站管理员来说,这将是直接的,因为我可以提供脚本,他们只是在服务器上激活脚本,但对于.net站点,他们必须将它包含在他们的解决方案中并重新编译,也许我可以提供一个DLL,但即使这将不得不被引用。

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

看来跨域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.'); 
    } 
}); 

祝你好运!