Firefox VIEW SOURCE显示登录页面

时间:2018-07-08 04:38:43

标签: firefox view-source

我在Arch Linux上运行Firefox 61.0。在查看页面源代码时,当我浏览需要我登录的网站时,经常(但并非总是,估计有20%的时间)看到登录页面的源代码。浏览本地主机。每个页面的源代码都是在服务器上生成的,这与操作DOM无关。它使用Django和PHP进行。示例:

登录页面:

<html>
<title>Login</title>
<body>
Login please: [    ]
</body>
</html>

主页:

<html>
<title>Welcome USER NAME</title>
<body>
Good day, USER
</body>
</html>

登录并进入主页后,按CTRL + U,它将显示给我:

<html>
<title>Login</title>
<body>
You are logged in as USER
</body>
</html>

换句话说,它不是从缓存中获取前一页;似乎以某种方式尝试获取我所在页面的源代码,但它被重定向到登录页面。

注意:如果我在页面上运行INSPECT ELEMENT,那么我会看到正确的源代码。问题仅在于VIEW SOURCE。在Chrome或其他浏览器中,仅在Firefox中,不会发生这种情况。

有人知道为什么会发生这种情况吗?

要澄清:这是两个不同的页面。登录页面是login.php,主页是index.php。当我在index.php上按CTRL + U时,即使我已经登录,Firefox也会向我显示login.php的源代码。

7 个答案:

答案 0 :(得分:2)

显然,这一直是Firefox的“查看源代码”的问题。 Here's a bug that was reported 13 years ago描述了Firefox通过刷新/重新请求整个页面来加载页面源代码的过程。

有可能正在下载页面的未缓存版本,因此对于调试器和源显示不同的结果。这完全取决于如何处理登录数据(cookie,会话变量,服务器变量等)

Here's another Steckoverflow question on a related topic。我希望这能给您一个解决问题的思路。

答案 1 :(得分:2)

我有同样的问题。在当前的FF68中,它是开发工具中preferences中的一个选项。必须是unchecked才能发送缓存的登录cookie。

答案 2 :(得分:2)

截至 2021 年 3 月,FF 86 有一个解决方法:

  1. 打开 Web 开发工具 (F12)
  2. 转到“网络”标签
  3. 刷新
  4. 选择页面请求所在的行(通常是第一行)
  5. 鼠标右键 -> 复制 -> 复制响应
  6. 粘贴到您喜欢的编辑器中

您将看到未修改的源代码。

答案 3 :(得分:0)

登录过程正在更改页面中的html。通常,在登录方案中,这是通过表单完成的。但是一般的想法是登录后就可以访问某些内容。这可能意味着在同一页面中有新信息。与首页(或登录页面)相同。后端进程检查登录信息,如果匹配,将发送新的html替换页面中的html。关于登录后网站提供的内容,有多种方法可以实现。例如,我建立了一个具有登录名的网站-一旦有人登录,他们的订单将自动填写。他们还可以更改其个人资料信息。但是页面没有改变。我还构建了将新页面完全替换为html的页面,该页面允许访问已注册用户被允许访问的任何内容。

答案 4 :(得分:0)

我也看到了这种现象,当应用程序(服务器端)无法正确处理缓存时就会发生这种情况。

可能发生的情况是,您的index.php将未登录的用户重定向到login.php。将此内容与index.php页面上的匹配项相结合,该页面将其自身作为资源(例如,在图像或xmlHttpRequest中)不提供凭据,并且您的应用程序会将浏览器(针对该资源)重定向到login.php。第二次匹配(对于与页面具有相同URL的资源,没有适当的凭据以及标题不正确的响应)将覆盖浏览器缓存中的第一个响应,使浏览器显示第二个响应(重定向到login.php),而不是查看源代码时的第一个(实际index.php)。

我希望这很清楚,否则我将尝试添加一个示例。您可以使用外部工具,例如redbot来检查索引页的可缓存性(同时检查是否使用凭据)。另外,如果您使用开发者控制台(网络选项卡),则应启用“持久日志”并验证请求的URL及其缓存状态。 另外,如果这是您控制的Web应用程序,请检查应用程序中是否正在发送任何Cache-ControlLast-Modified标头。

答案 5 :(得分:0)

您也可以在查看源窗口的地址栏中重新输入网址。

循序渐进:

  • 右键单击并单击“查看页面源代码”
  • 出现源代码窗口(在本例中显示来自登录页面的不需要的源代码)
  • 在“页面源窗口”的地址栏中输入您要查看源代码的页面的网址
  • 现在你看到了代码并且没有另一个重定向到登录页面(至少在我的项目中)

答案 6 :(得分:0)

对以上 Ognyan 的回答略有修改,但您无法在评论中添加图片。照他说的做:

  • 打开开发工具
  • 加载页面
  • 查找页面加载(应该是“网络”选项卡上的第一个请求)
  • 单击,然后在详细信息部分右键单击“响应”部分

现在,不要将任何内容复制/粘贴到编辑器中,而是查找“原始”切换按钮并将其打开。您将看到原始来源:

enter image description here