2

背景: セッション、ページ テンプレート、認証、および動的コンテンツを追加することでアプリケーションを拡張する 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/」を使用するようにページを変更すると、すべてが機能します。

4

0 に答える 0