2013-11-24 79 views
1

我使用RestyGWT與在JBoss AS7遠程服務通信,但越來越以下錯誤:CORS問題與RestyGWT客戶端在JBoss遠程服務AS 7

OPTIONS http://localhost:8080/remoteService No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8888' is therefore not allowed access. 
VM482:81 
XMLHttpRequest cannot load http://localhost:8080/remoteService No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8888' is therefore not allowed access. 

我已經啓用以下通過@OPTIONS頭和訪問控制在後端服務器爲:

"Access-Control-Allow-Origin", "*" 
"Access-Control-Allow-Methods", "POST, GET, UPDATE, DELETE, OPTIONS" 
"Access-Control-Allow-Headers", "content-type,x-http-method-override" 

我的客戶接口與服務器進行通信是:

@Path("/remoteService") 
public interface MonitorMeService extends RestService { 
    @Path(value="/getBooks") 
    @GET 
    @Consumes(MediaType.APPLICATION_JSON) 
     void getBooks(MethodCallback<List<Books>> callback); 
} 

任何人都可以請告訴我失蹤?我錯過了哪些CORS處理?

回答

0

除了選項,您也必須設置Access-Control-Allow-Origin頭其他方法:POST,GET等

[編輯]

我從來沒有用過restyGwt,所以我不知道如何配置restyGwt servlets來設置標題,但我使用this filter我前一段時間編寫的時候我想在我的服務器容器中配置CORS。它適用於任何服務器servlet(RPC,RF,JSON等)。我建議使用這個過濾器,而不是處理應用中的標題。

+0

「Access-Control-Allow-Origin」,「*」 「Access-Control-Allow-Methods」,「POST,GET,UPDATE,DELETE,OPTIONS」 「Access-Control-頭文件「,」content-type,x-http-method-override「,但仍然會出現相同的錯誤。 –

+0

對於非OPTIONS方法,使用'Access-Control-Allow-Origin'標頭就足夠了。編輯我的回覆建議過濾器。 –

1

我用RestyGWT成功地使用了CORS,直到我打開牆壁試圖讓會話cookie正常工作。我在服務器上使用Play框架,並且瀏覽器未與CORS審覈交互的set-cookie標頭響應協作。

我發現,通過轉到服務器上的簡單反向代理設置,我可以完全免除所有CORS指令(並且不再需要使用JSONP)。

這使得一切都變得簡單了,現在餅乾工作正常。

如果您有興趣瞭解更多詳情,請回復此問題 - 我很樂意發佈更多詳情。謝謝。 JR