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ただし、今回の応答ヘッダーは 403 ではなく 404 Not Found です。

UUIDの形式(間にさまざまな「-」がある)と関係があるのではないかと疑っています。もしそうなら、どうすればこれを修正できますか?

4

2 に答える 2

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 に答える