java - 浏览器发送 OPTIONS 而不是 PUT 或 DELETE

标签 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);
    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] OPTIONS http://localhost:8182/recipe/35 [HTTP/1.1 405 方法不允许 3ms]

我在这里找到了一个帖子:browsers send Options instead of Post after changing http header但这并不能解决我的问题。对于 POST 和 GET 它可以工作,但只能与 Firefox Addon 一起解决 SOP 的问题,也可以添加新的 header ,但是添加 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);
    }

最佳答案

在 CORS 请求的情况下,发送 OPTION 请求是预期的行为。您可以在 Restserver 中为 OPTIONS 添加处理程序。

您需要返回有效的 Access-Control-Allow-OriginAccess-Control-Allow-Methods。然后客户端将发送第二个请求(在您的情况下为 PUT 或 DELETE)。

关于java - 浏览器发送 OPTIONS 而不是 PUT 或 DELETE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16639311/

相关文章:

google-app-engine - 如何估算 GAE 上的托管服务成本?

javascript - (MyClass) JavaScriptObject.createObject() 与 JavaScriptObject.createObject().cast()

gwt - RequestBuilder 返回空响应

java - GWT 突然停止执行

c++ - 如何设置 C++ Web 应用程序服务器以监听来自 tomcat/reSTLet 服务器的 http 请求

java - 如何使用 Apache Camel REST DSL (Servlet/ReSTLet) 设置 HTTP 状态代码原因

java - 事件未到达 kurento java 服务器

java - JSP 和 derby 数据库类

java - Java 动态代理与常规代理的有用性

java - Eclipse R.java 更改未保存