本主題之前已經有過不同的討論,但我還沒有找到適合我的解決方案。我使用的是jquery 1.7.1。
我有一個可以返回JSON和XML的REST風格的Web服務,但是對於這個項目我需要使用XML端點。爲了解決跨域限制,我使用Perl的HTTP :: Proxy創建了一個透明代理。這個代理很容易,因爲我可以在任何地方與HTTP GET客戶端通信。
由於它是一個透明代理,它依賴於客戶端請求中設置的主機頭。我的代碼如下所示:
$.ajax({
type: "GET",
crossDomain: true, // not needed I think
error: function() { alert('Failed ..'); },
url: "http://www.skiforeningen.no:8080/<remote REST URL>",
dataType: "xml",
headers: {'Host': 'remote REST host'},
success: parseXml,
});
Chrome是非常明確的,並說
拒絕設定不安全頭 「主機」
和
的XMLHttpRequest無法加載http://www.skiforeningen.no:8080/sted/Norge/Oslo/Oslo/Skansebakken/varsel.xml。來源http://www.skiforeningen.no是不允許的訪問控制允許來源
但代理和HTML頁面與jQuery位於主機www.skiforeningen.no。
FF也拒絕設置主機頭(顯然),因爲錯誤事件處理程序被觸發。
感謝,
謝謝,我不知道的端口限制。我可以通過讓Apache在端口80上執行代理來解決這個問題 – 2012-01-16 05:58:59