与JBoss AS 7上的远程服务的RestyGWT客户端的CORS问题

时间:2013-11-24 13:06:10

标签: rest gwt jboss7.x cors resty-gwt

我正在使用RestyGWT与JBoss AS7上的远程服务进行通信,但收到以下错误:

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处理?

2 个答案:

答案 0 :(得分:1)

我正在使用CORS成功使用RestyGWT,直到我试图让会话cookie正常工作。我在服务器上使用Play框架,浏览器没有与CORS主持交互的set-cookie标头响应合作。

我发现通过转移到服务器上的简单反向代理设置,我可以完全免除所有CORS指令(也不再需要使用JSONP)。

这使一切变得更简单,现在cookie正常工作。

如果您对更多详情感兴趣,请回复此信息 - 我们很乐意发布更多详情。谢谢。 JR

答案 1 :(得分:0)

除了OPTION之外,你还必须为其他方法设置Access-Control-Allow-Origin标题:POST,GET等

[编辑]

我从未使用过restyGwt,所以我不知道如何配置restyGwt servlet来设置头文件,但是我使用this filter我之前写的时候想在我的服务器容器中配置CORS。它适用于任何服务器servlet(RPC,RF,JSON等)。我建议使用此过滤器,而不是在应用中处理标题。