2013-06-27 59 views
0

我正在創建這個客戶端webapp沒有服務器端。例如,我希望此客戶端只需使用公共網站發出HTTP請求,如http://www.google.com。到目前爲止,我已經使用RequestBuilder來構建我的HTTP請求,但是當我以開發模式運行應用程序時,我的請求的響應代碼始終爲0.在構建它並向hmtl文件發出請求後,它給出了相同的結果。它在我看來,客戶端不與公共互聯網通信,但只有本地服務器(這是空的)。GWT客戶端與公共服務器通信

String url = "http://www.google.com"; 
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url)); 

有無論如何,我可以使這項工作?謝謝!

回答

1

除非您在服務器中啓用CORS,否則無法將XHR請求發送到與下載頁面不同的服務器。

google.com未啓用CORS,因此您無法使用XHR請求他們的頁面。

如果您擁有要請求的域啓用CORS,here您有一個java後端的過濾器示例。

如果您只是想在您的UI中顯示一個3party網頁,您可以將它作爲iframe插入,但請注意,由於它位於不同的域中,因此無法讀取iframe內容。

注意CORS的作品幾乎在瀏覽器,但IE瀏覽器/ 8-9,你必須使用XDomainRequest

0

您正在運行到Same Origin Policy限制。基本上,直接向不同的域請求是不可能的。如果您只是想按原樣顯示該網站,則可以使用iframe來執行此操作;如果你想提出更具體的請求,那麼你需要使用類似JSONP這樣做,但這需要服務器實際上支持它。

+0

@Marconious這句話並不是真正的「不可能直接向不同的域發出請求」。實際上,現在大多數瀏覽器都支持CORS機制,因此如果此域返回某些標頭,則可以向任何域發送一個Ajax請求。雖然IE8-IE9而不是CORS有XDomainRequest。 –