2

背景:我有一个 Java 网络服务器类 (NanoHTTPD),我的应用程序通过添加会话、页面模板、身份验证和动态内容来扩展它。我想让应用程序自包含,而不依赖于 SQLite 之外的任何东西。它旨在仅在安装 Java 和 SQLite 的情况下运行。

现在解决我的问题。我正在测试一个只有注销链接的简单索引页面。如果用户在没有登录的情况下访问索引,他们会被 HTTP 重定向到登录页面。当他们发布凭据并经过验证时,它将它们返回到索引页面。如果您在 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

还有一件事,我制作了一个页面“test.html”,我从上面复制了源代码。Firefox 也不能正确处理它并停留在页面上而不给出 File Not Found 错误。此外,如果我将页面更改为使用“/logout1/”,一切正常。

4

0 回答 0