我正在使用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处理?
答案 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等)。我建议使用此过滤器,而不是在应用中处理标题。