2010-08-30 95 views

回答

1

不能使用JSONP做一個POST - 它所做的就是插入<script src="...">標籤,瀏覽器觸發關閉的GET請求。

也許你正在尋找的是CORS,但只有FF 3.5,IE 8和Safari 4以及更新版本才支持。服務器也必須支持它。

否則,您將不得不從您的服務器代理到其他域。

+0

謝謝,你的建議看起來很有希望。但由於時間有限,我決定繼續使用GET。 – adranale 2010-09-03 10:59:39

+0

你忘了提及Chrome 3或更新版本。如果它有幫助,我已經更新了CORS維基百科文章,並提供了幾天前我收集的有關瀏覽器支持的更多詳細信息。 – ssokolow 2010-09-19 05:11:47

4

Google APIs Library for GWT解決了這個問題,通過使用Shindig項目的gadgets.rpc功能發送跨框架消息在頁面指向一個iframe到頁面你的服務器上(發送跨域GWT-RPC調用)試圖溝通。該iframe是發出請求的那個,並且當它收到響應時,它會發回另一個跨幀消息。

這包裹在GadgetsRequestBuilder

擴展此功能以使用常規XHR請求(使用POST方法)而不是GWT-RPC請求應該是相當直接的。

+0

感謝您的建議,但由於此任務的時間有限,我決定繼續使用GET。 – adranale 2010-09-03 11:00:51

0

我也遇到過這個問題,爲了讓它正常工作,我不得不實施一些古怪的方案。幸運的是,我控制着服務器和客戶端。

POST調用定義了一個名爲'src'的URL參數,其中包含一些隨機字符串。當我POST到服務器時,數據會發送到服務器,但我無法獲得響應。

發生什麼情況是服務器在弱緩存中用'src'鍵緩存POST響應。

然後,在POST完成相同的'src'鍵後,我立即執行JSONP get調用,並獲取結果。

這不是很漂亮,但它的工作原理。