You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Cloudflare时如何设置仅允许自有站点iframe访问子域名页面

问题解答

需求实现方案

你的需求完全可以实现,组合使用以下三层规则即可覆盖所有场景:

1. 配置CSP头限制iframe嵌入权限

这是W3C标准专门用于控制页面可被嵌套权限的方案,优先级高于旧的X-Frame-Options头,直接在子域名的Apache配置或者站点根目录.htaccess文件中添加以下规则:

<IfModule mod_headers.c>
    # 将下方https://你的主域名.com替换为你实际的主站地址
    Header set Content-Security-Policy "frame-ancestors 'self' https://你的主域名.com;"
</IfModule>

该规则会强制所有浏览器仅允许你的主站iframe嵌套子域名页面,其他站点尝试嵌套时会直接被浏览器拦截。

2. 配置来源校验禁止直接访问/第三方访问

CSP仅限制嵌套行为,无法拦截用户直接输入子域名地址访问、第三方程序爬取的场景,可通过校验请求Referer头实现拦截:

  • Cloudflare侧配置(更推荐,边缘拦截节省服务器资源):在Cloudflare控制台自定义规则中新建规则,匹配条件设置为「主机名等于你的游戏子域名 且 Referer不包含你的主域名」,动作选择阻止,返回状态码403即可。
  • Apache侧配置(无需修改Cloudflare时使用):在.htaccess中添加以下规则:
<IfModule mod_rewrite.c>
    RewriteEngine On
    # 替换为你的实际主站地址
    RewriteCond %{HTTP_REFERER} !^https://你的主域名.com/.*$ [NC]
    RewriteRule .* - [F,L]
</IfModule>

如果需要避免少部分用户禁用Referer导致的误拦截,可额外加签名校验逻辑:主站生成带有效期和加密签名的子域名访问地址,子域名服务端验证签名合法才返回内容,该方案兼容性和安全性更高。

IP归属与冲突问题说明

用户通过主站的iframe加载子域名页面时,请求是用户浏览器直接向子域名服务器发起的客户端独立请求,主站服务器仅负责返回包含iframe标签的主站页面内容,不会转发子域名的资源请求,因此发起请求的IP是用户的真实IP,不是主站的服务器IP。
如果你直接配置子域名仅允许主站IP访问,会拦截所有普通用户的合法iframe请求,出现严重的访问冲突,该方案不可行。


内容的提问来源于stack exchange,提问作者amreos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:06:04