15

我在 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,那么我确实会看到正确的源代码。问题仅在于查看源。这不会发生在 Chrome 或其他浏览器中,只会发生在 Firefox 中。

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

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

4

7 回答 7

3

显然,这一直是 Firefox 的“查看源代码”的问题。这是 13 年前报告的一个错误,描述了 Firefox 通过刷新/重新请求整个页面来加载页面源代码的过程。

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

这是有关相关主题的另一个 Steckoverflow 问题。我希望这可以让您了解如何解决您遇到的问题。

于 2018-08-17T16:50:02.843 回答
2

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

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

您将看到未修改的源。

于 2021-03-11T15:33:46.117 回答
2

对上面 Ognyan 的回答稍作修改,但不能在评论中添加图片。照他说的做:

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

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

在此处输入图像描述

于 2021-05-21T00:16:28.423 回答
1

我遇到过同样的问题。在当前的 FF68 中,它是开发工具首选项中的一个选项。必须取消选中才能发送缓存的登录 cookie。

在此处输入图像描述

在此处输入图像描述

于 2019-09-02T08:37:49.407 回答
0

登录过程正在更改页面中的 html。很多时候,在登录场景中,这是通过表单完成的。但一般的想法是让您在登录后访问某些内容。这可能意味着同一页面中的新信息。它与主页(可能)或登录页面相同。后端进程检查登录信息,如果匹配,将发送新的 html 以替换页面中的 html。有不止一种方法可以做到这一点,关于登录后网站提供什么的想法也不止一种。例如,我建立了一个登录网站——一旦有人登录——他们的订单就会自动填写. 他们还可以更改他们的个人资料信息。但是页面没有变化。一世'

于 2018-08-12T18:12:56.673 回答
0

我也看到过这种行为,当应用程序(服务器端)没有正确处理缓存时就会发生这种情况。

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

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

于 2018-08-16T14:52:07.740 回答
0

您也可以在查看源代码窗口的地址栏中重新键入 url。

一步步:

  • 右键单击并单击“查看页面源”
  • 源窗口出现(在这种情况下,登录页面中不需要的源代码)
  • 在“页面源窗口”的地址栏中输入要查看源代码的页面的网址
  • 现在您看到代码并且没有另一个重定向到登录页面(至少在我的项目中)
于 2021-03-30T00:11:02.267 回答