2011-12-08 85 views
0

我有一個後端REST API,並且我有一個GWT的前端。我在我的IP地址是192.168.1.4的網絡上。GWT與寧靜的架構交互

我聲明瞭一個恆定的URL作爲

public static final String DomainName="http://127.0.0.1/recess/restApp/"; 

用ip 127.0.0.1,一切工作正常

但是當我更改IP 192.168.1.4到的應用程序不工作並且我得到的狀態代碼爲0.

GWT應用程序在Web根上與REST API相同。

事實上,這不可能是一個相同的原產地政策問題,因爲它的網絡服務?

任何人都有這個想法?

我使用xampp和GWT項目在htdocs相同的REST API!

+0

除了更改該靜態值,您是否在瀏覽器中以192.168.1.4訪問應用程序? – laz

+0

不,這不是問題,這是一個網絡服務,它可以在不同的域,但我會嘗試它 – Noor

+0

你從客戶端代碼或服務器代碼連接到它嗎? – laz

回答

1

這聽起來像是你遇到了禁止外部連接的沙盒策略。

您可能遇到的一個策略是GWT瀏覽器附件連接限制。在Chrome中,在工具|上添加您的IP地址擴展| GWT Dev Plugin |選項。在Firefox中,它位於Tools |附加組件|擴展| Google ... |選項

我可以建議您不要使用硬編碼的網址,以符合單一來源政策,您可能希望使用加載網頁的確切網址。 Web工具包提供了一個機制來做到這一點。

public static GWT.getHostPageBaseURL()對預先考慮相對於主機頁面的資源路徑很有用。

public static GWT.getModuleBaseURL()對於準備用作模塊相對的URLs很有用。

http://google-web-toolkit.googlecode.com/svn/javadoc/2.3/com/google/gwt/core/client/GWT.html#getHostPageBaseURL()

1

恐怕這是一個同源策略違規:如果你問你的瀏覽器中使用XMLHttpRequest來加載某些URL(或GWT一個RequestBuilder),那麼該URL必須是對同樣的來源作爲頁面試圖訪問它;除非瀏覽器支持CORS(除IE以外的所有瀏覽器;至少在IE10出門之前),並且您嘗試訪問的服務器發送相應的HTTP標頭以允許跨源連接。