Java 浏览器发送选项,而不是放置或删除
我正在将GWT与Restlet一起使用,希望向我的Restserver发送一个删除。这是我的客户端代码,用于发送:Java 浏览器发送选项,而不是放置或删除,java,gwt,restlet,Java,Gwt,Restlet,我正在将GWT与Restlet一起使用,希望向我的Restserver发送一个删除。这是我的客户端代码,用于发送: private void recipeDeleteButton() { String id = views.getViewRecipeDetail().getRecipeId().getText(); ClientResource res = new ClientResource(Rest.RECIPE_CLIENT_RESOURCE_LOCAL + id);
private void recipeDeleteButton() {
String id = views.getViewRecipeDetail().getRecipeId().getText();
ClientResource res = new ClientResource(Rest.RECIPE_CLIENT_RESOURCE_LOCAL + id);
res.setOnResponse(new Uniform() {
@Override
public void handle(Request request, Response response) {
System.out.println(response.getStatus().getDescription());
}
});
res.delete();
}
但当我想测试这一点时,我的Firefox会说:
[22:28:28.796]选项http://localhost:8182/recipe/35 [HTTP/1.1 405方法不允许3ms]
我已经在这里找到了一个帖子:但这并不能解决我的问题。对于POST和GET,它可以工作,但只能使用Firefox插件来解决SOP的问题,也可以添加新的标题,但添加PUT、DELETE和OPTIONS并不能解决此问题
有人知道这个问题的解决方案吗,提前谢谢
编辑
我在服务器端试过类似的东西,但他还是有405
Series<Header> responseHeaders = (Series<Header>) getResponse().getAttributes().get("org.restlet.http.headers");
if (responseHeaders == null) {
responseHeaders = new Series<Header>(Header.class);
responseHeaders.add(new Header("Access-Control-Allow-Origin", "*"));
responseHeaders.add(new Header("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS"));
getResponse().getAttributes().put("org.restlet.http.headers", responseHeaders);
}
Series responseHeaders=(Series)getResponse().getAttributes().get(“org.restlet.http.headers”);
if(responseHeaders==null){
responseHeaders=新系列(Header.class);
add(新标题(“访问控制允许源代码”、“*”));
添加(新标题(“访问控制允许方法”、“获取、发布、放置、删除、选项”);
getResponse().getAttributes().put(“org.restlet.http.headers”,responseHeaders);
}
发送选项请求是CORS请求的预期行为。您可以为Restserver中的选项添加处理程序
您需要返回有效的访问控制允许来源和访问控制允许方法。然后,客户机将发送第二个请求(在您的情况下为PUT或DELETE)。问题在于您没有用于OPTIONS请求的处理程序(我假设它有用于GET和DELETE的处理程序)。简单的方法是在服务器上为所有选项请求创建全局处理程序,而不管路径如何,或者为/recipe/35创建选项处理程序。我刚刚在删除注释上面添加了一个选项注释,现在它可以工作了。非常感谢!