整体都是通过HTTP响应标头设置属性达到目的
名称(N):X-Frame-Options
值(V):DENY
值类型:
- DENY:浏览器拒绝当前页面加载任何Frame页面。
- SAMEORIGIN:frame页面的地址只能为同源域名下的页面。
- ALLOW-FROM:origin为允许frame加载的页面地址。 格式:ALLOW-FROM www.domain.com
方法有两种:①Windows服务器下可以通过设置IIS的HTTP响应标头设置
②Asp.net core 或者则.Net5及其以上可以通过代码设置HTTP响应标头
方法①:打开IIS,选中要限制的网站,点击右侧“Http响应标头”,点击“添加”,如下图:
如需要浏览器拒绝当前页面加载任何Frame页面,如下图设置:
方法②:通过代码限制网页嵌套(例子是.NET5环境)。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (!string.IsNullOrEmpty(Configuration.GetSection("X-Frame-Options").Value))
{
app.UseSecurityHeadersMiddleware(new SecurityHeadersBuilder()
.AddCustomHeader("X-Frame-Options", $"{Configuration.GetSection("X-Frame-Options").Value}"));
}
/* 省略代码 */
}
注:Configuration.GetSection("X-Frame-Options").Value 为配置文件获取设置值,也就是上述的HTTP响应标头值。X-Frame-Options的ALLOW-FROM值不是所有浏览器都支持,如下是2022-06-25截图。
如果X-Frame-Options项的 ALLOW-FROM属性值浏览器不支持,可以尝试使用Http响应标头中 Content-Security-Policy的frame-ancestors www.domain.com 值。(2022-06-25补充更新)