如何配置.NET Core 6站点仅允许指定域名嵌入iframe?
问题描述
我尝试将自有站点 secondsite.com 嵌入到 mainsite.com 的iframe中,在mainsite.com页面使用了如下HTML代码:
<iframe src="https://secondsite.com"></iframe>
但页面加载时控制台报错:
Refused to display 'https://secondsite.com' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
请问需要在secondsite的.NET Core 6项目中添加什么代码,才能让它仅允许被mainsite.com的iframe嵌入?是否可以在Program.cs中配置实现全局生效?
解决方案
可以通过在.NET Core 6项目的Program.cs中添加全局中间件,为所有响应设置Content-Security-Policy头来实现需求,代码如下:
app.Use(async (context, next) => { context.Response.Headers.Add("Content-Security-Policy", "default-src 'self'; frame-ancestors 'self' https://mainsite.com;"); await next(); });
说明
frame-ancestors 'self' https://mainsite.com指定了允许嵌入当前站点的父页面来源:'self'表示站点自身可以嵌入自己,https://mainsite.com则允许目标站点嵌入。- 该中间件会对所有请求的响应自动添加此头,实现全局生效,无需单独配置每个页面。
内容的提问来源于stack exchange,提问作者moonybaby
相关产品推荐
相关产品推荐

