我在将X-Frame-Options
标题添加到简单的 HTML 文件时遇到问题。
有没有办法使用 JavaScript 来做到这一点?
我在将X-Frame-Options
标题添加到简单的 HTML 文件时遇到问题。
有没有办法使用 JavaScript 来做到这一点?
X-Frame-Options
是一个 HTTP 标头。因此,它不是 HTML 的一部分,不能在 HTML 文档中设置。
它只是一个 HTTP 标头的一个原因是客户端应该能够在解析 HTML 代码之前决定是否允许将文档嵌入到框架中。
因此,您无法通过编辑文件来实现,但您需要修改服务器的 HTTP 响应。通常,这是在 Web 服务器软件提供的设置中或使用服务器端语言完成的。
例如,Apache 中的设置可能如下所示:
Header always append X-Frame-Options DENY
或者,在 PHP 中,您可以像这样设置标题:
<?php header('X-Frame-Options: DENY'); ?>
请注意,有一个更现代的CSP等效项frame-ancestors
。但是,虽然可以将某些 CSP 策略设置为<meta>
标签,但这在此处是不可能的。这并不能正常工作:
<head>
<!-- This does *not* work! -->
<meta http-equiv="Content-Security-Policy" content="frame-ancestors 'none'">
</head>
还可以查看Clickjacking Defense Cheat Sheet,了解除了设置 XFO 标头之外的点击劫持防御措施的概述。
X-Frame-Options 标头添加在服务器端,而不是客户端。这是因为标头用于控制浏览器应如何呈现页面。
无论服务器托管您的文件,都必须添加此标头。
由于您在评论中提到 IIS 是您的 Web 服务器,是的,有一种方法可以在 Web 服务器本身上进行设置。
其他几个答案提到将其添加到 web.config,如果这是一个 ASP.NET 应用程序,这是一个很好的选择,但还有另一种方法适用于从 IIS提供的任何Web 应用程序,无论技术如何。
如果您打开,然后展开导航窗格中Internet Information Services (IIS) Manager
的节点并突出显示您的站点,则在“功能视图”窗格的功能组下,有一个名为 的功能。如果您打开此节点,在右侧的窗格中,您会看到添加标题的操作。只需添加带有名称和所需值的标题,IIS 就会将其添加到从该站点提供的每个响应中。 Sites
IIS
HTTP Response Headers
Actions
X-Frame-Options