2

我正在使用 RESTEasy 和 Jboss eap 6.1。

我有以下资源:

@Path("/sessions")
public class Sessions {
    @DELETE
    @Path("/{sessionId}/")
    public Response logout(@PathParam("sessionId") String sessionId)
    {
        //sessions.remove(sessionId);

        return Response.ok().build();
    }
}

sessionId是一个生成的 UUID,其形式如下9b3db022-84de-4ba2-8194-5ff7542bf86b

我从客户那里打了以下电话:

$.ajax({
    url: "/sessions/" + javaRest.cookie.get("sessionId") + "/",
    type: "DELETE",             
    success : //do something,
    error : //do something;
    )}

javaRest.cookie.get(cookieName)是一个查找给定值的函数cookieName

但是我得到了以下响应错误标头:

HTTP/1.1 403 Forbidden,
Server: Apache-Coyote/1.1,
Content-Type: text/html;charset=utf-8,
Content-Length: 1072,
Date: Mon, 01 Jul 2013 17:22:48 GMT

然后我用@GET与资源相同的设置制作了另一个@DELETE。但是,这次响应头是 404 Not Found 而不是 403。

我怀疑它与 UUID 的格式有关(中间有各种“-”)。如果是,我该如何解决这个问题?

4

2 回答 2

0

你可以尝试用 js 编码你的参数encodeURIComponent(param);

于 2013-07-01T17:46:50.010 回答
0

我找到了我的问题的答案。这是我的一个小但非常重要的错误。

我写了我使用的问题:

$.ajax({
url: "sessions/" + javaRest.cookie.get("sessionId") + "/",
type: "DELETE",             
success : //do something,
error : //do something;
)}

但我自己并没有准确地输入我在这里输入的内容。

sessions/我没有使用 ,而是/sessions/在我的客户端代码中使用。Ajax 的解析方式与破坏应用程序的方式/sessions/不同sessions/

当应用程序部署在 JBoss 服务器上时,它的 URL 类似于http://localhost:8080/AppName/

使用sessions/, ajax 将 URL 解析为http://localhost:8080/AppName/sessions/. 但是,使用/sessions/时,URL 被解析为http://localhost:8080/sessions/并破坏了应用程序。

我想我在这里自欺欺人了。但我要感谢 Wilker Iceri 的快速回复。

保留或删除此问题的决定完全取决于工作人员。

于 2013-07-02T12:33:29.947 回答