2011-05-07 41 views
1

是通過使用代理來實現此目的的唯一正確方法嗎?我正在研究一個Clicktail克隆(網絡用戶交互&鼠標跟蹤分析),到目前爲止我的腳本會跟蹤所有的用戶交互,並將它們發佈到我的服務器並保存到數據庫,但問題是如果將此腳本添加到將位於另一個域中的客戶端,則由於跨域腳本限制,Ajax帖子將失敗。Ajax POST到另一臺服務器 - 克服跨域限制

從閱讀這裏,有一些黑客,但我很想避免它們。看起來代理是唯一的方法。但是這反過來又給我帶來了一個更大的問題,因爲任何希望使用我的Clicktail克隆的客戶端都必須設置一個代理,並在其上添加javascript。對於一個擁有PHP站點的網站管理員來說,這將是直接的,因爲我可以提供腳本,他們只是在服務器上激活腳本,但對於.net站點,他們必須將它包含在他們的解決方案中並重新編譯,也許我可以提供一個DLL,但即使這將不得不被引用。

我一直在閱讀關於此HTML 5 window.postMessage - >和這個jquery插件http://benalman.com/projects/jquery-postmessage-plugin/這看起來不錯,我認爲不能使用它來回放捕獲的用戶交互,使用iframe但它沒有,(至少我無法看到)如何解決跨域AJAX發佈的問題。 如果您處於我的處境,您是否可以發佈您的可能解決方案?

回答

2

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

祝你好運!

相關問題