背景: セッション、ページ テンプレート、認証、および動的コンテンツを追加することでアプリケーションを拡張する Java Web サーバー クラス (NanoHTTPD) があります。アプリケーションを自己完結型にし、SQLite 以外には依存しないようにしたかったのです。Java と SQLite のみがインストールされた状態で実行することを意図しています。
今私の問題のために。ログアウト リンクのみを含む単純なインデックス ページをテストしています。ユーザーがログインせずにインデックスにアクセスすると、HTTP でログイン ページにリダイレクトされます。認証情報を POST し、検証されると、インデックス ページに返されます。Firefox で [ログアウト] リンクをクリックすると、アプリケーションはインデックス ('/') への URI のみを受け取ります。Chrome で同じプロセスに従って、期待どおりにユーザーをログアウトします。どの時点でも GET URL を変更しません。uri.equals("/logout/") のみを実行します。Firefox がこのリンクを別の方法で解釈する理由はありますか?
ログイン HTML:
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html>
<head>
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<div>
<p></p>
<form method="post" action="/login/">
<table>
<tr>
<td>
<label for="username">Username</label>
<input type="text" name="username" id="username" maxlength="100" />
</td>
<td>
<label for="password">Password</label>
<input type="password" name="password" id="password" />
</td>
<td></td>
<td>
<input type="submit" value="Sign In" />
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
インデックス HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Index</title>
</head>
<body>
<h1>Index</h1>
<a href="/logout/">Logout</a>
</body>
</html>
URL を一致させるためのコードは .equals() だけであり、これより前に実行される唯一のコードは、次の場所にある NanoHTTPD です: https://github.com/elonen/nanohttpd/blob/master/NanoHTTPD.java
もう1つ、上記のソースをコピーしたページ「test.html」を作成しました。Firefox もそれを正しく処理せず、File Not Found エラーを出さずにページにとどまります。さらに、「/logout1/」を使用するようにページを変更すると、すべてが機能します。