如何防止 Chrome 在查看源代码时刷新页面?

如何防止 Chrome 在查看源代码时刷新页面?

在 Google Chrome 中查看页面源代码时,浏览器会打开一个新标签页,并基本上将 URL 和前缀粘贴进去view-source:。这是不可取的。

作为开发人员,我可能会添加一些诊断输出,这些输出仅在提交表单后在源代码中可见。当 Chrome 刷新页面以查看源代码时,它会使这些信息消失。

有什么方法可以阻止这种行为吗?

笔记:我熟悉“检查元素”选项。但对于查看您正在查看的页面的原始页面源代码而言,这还不够。


快速测试脚本

<pre>
  <?= print_r($_POST, true) ?>
</pre>
<form action="" method="post">
  <input id="foo" name="foo" value="bar" />
  <input type="submit" />
</form>

点击提交按钮后,页面显示

Array
(
    [foo] => bar
)

如果你查看页面源代码,你会看到空的 $_POST输出

<pre>
Array
(
)
</pre>
<form action="" method="post"> 
  <input id="foo" name="foo" value="bar" /> 
  <input type="submit" /> 
</form> 

更新

显然这漏洞已经提交了。唉……

如果有人知道一个好的解决方法,我将不胜感激。

答案1

从错误报告页面,评论 12 中提到的解决方法工作原理:在开发人员工具中,启用资源跟踪。(如果已关闭,则启用它将重新提交生成当前可见页面的请求,无论是 POST 还是 GET。)在资源列表中,您可以单击主页以查看服务器针对 POST 和 GET 请求返回的源代码。

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

更多信息

我使用一个简单的 php 文件运行了一些测试,该文件显示了所使用的请求方法和 POST 值、代理服务器日志(用于查看 Chrome 发出的请求)以及前缀(chrome://net-internals/view-cache/用于查看 Chrome 正在缓存的内容)。

当你使用“查看源代码”命令时,Chrome 会显示其源代码缓存版本页面,并且它仅缓存通过 GET 方法请求的页面。

如果您正在查看之前使用 GET 和 POST 请求过的页面,则只会缓存 GET 版本。使用“查看源”命令不会重新请求该页面,但会显示缓存的 GET 版本,而不是当前可见的 POST 版本(如果有)。

如果您正在查看仅使用 POST 方法请求的页面,则使用查看源命令将导致 Chrome 查找其缓存,找不到任何内容,然后使用 GET 请求该页面,将其缓存,并显示其来源。

答案2

好问题——但看到那些“这是错的”或“这行不通”的评论,我有点失望。这种行为使得“查看页面源代码”功能在很多情况下对开发毫无用处。

有一个名为“快速源代码查看器“,它似乎实际上显示了当前加载页面的来源(但我还没有用 POST 请求对其进行测试)。

答案3

很遗憾地告诉你,但这违反了当前浏览器中浏览和调试的本质……

原始源代码不会保存在内存中,而是会尽快解析并转换为解析树,这是为了防止无用的内存使用。因此,隐藏在源代码中的任何调试信息都会丢失,必须明确请求。在所谓的 Web 2.0 网站中,元素也会发生变化,这就是检查如此的原因……

解决方案 1: Fiddler 网络调试器允许您检查 HTTP 流量,
这可以让您查看上次请求的调试信息。

解决方案 2:嵌入您的调试信息或将其附加在末尾,
或者以弹出窗口或另一种不会干扰您的布局的方式显示它。

相关内容