【问题标题】:X-Frame-Options ALLOW-FROM not working if don't use www如果不使用 www,X-Frame-Options ALLOW-FROM 不起作用
【发布时间】:2019-03-19 06:53:10
【问题描述】:

Angular 7、IIS 7、C# .NET Core、FireFox

对于我的网站:https://www.example.com,如果用户使用https://example.com,x-frames 会失败(注意没有 www)

我正在构建的标题是: Headers.Add("X-frame-options", "ALLOW FROM https://www.example.com,https://example.com");

我已经尝试了无数次迭代,无论我尝试什么,我都无法让它对两者都起作用: https://www.example.com https://example.com

【问题讨论】:

    标签: x-frame-options


    【解决方案1】:

    the specification:

    在一个 ALLOW-FROM 中声明多个域的通配符或列表 不允许声明

    Usage Design Pattern and Example Scenario for the ALLOW-FROM Parameter

    1. 想要在框架中呈现请求内容的页面 将其自己的原始信息提供给提供 要通过查询字符串参数框定的内容。

    例如在 URL 上使用查询字符串。

    1. 服务器验证主机名是否符合其条件,以便 页面允许被目标资源框住。这 例如,可能通过查找受信任的白名单来发生 允许构成页面的域名。例如, 对于 Facebook 的“Like”按钮,服务器可以检查以查看 提供的主机名与预期的主机名匹配 “喜欢”按钮。

    2. 服务器在“X-Frame-Options: ALLOW-FROM”中返回主机名 如果在第 2 步中满足适当的标准。

    3. 浏览器强制执行“X-Frame-Options: ALLOW-FROM”标头。


    注意X-Frame-OptionsContent Security Policy (CSP) 取代,frame ancestors directive 确实允许您提供一个列表。


    也就是说,在www.example.comexample.com 上托管同一个网站并没有什么意义。选择其中一个规范并从另一个发出301 重定向到它。

    那么您只需要在X-Frame-Options 中允许规范的那个。

    【讨论】:

    • 我不想使用通配符,因为我的测试站点是“test.example.com”,这可能会导致我的测试系统受到污染。这就是我避免使用通配符的原因。我实际上正在使用 CSP,但 FireFox 似乎认为这还不够?如果我不使用 X-Frame-Options,FireFox 会抱怨当我最初构建站点时,它是 www.example.com,人们变得懒惰,输入了“example.com”。所以我的解决方案是简单地为“example.com”添加一个主机头。我
    • 在添加 URL 重写器以将所有用户从 Example.Com 重定向到 example.com,然后在我的“ALLOW-FROM”标头中仅添加 example.com 后,确实解决了问题。跨度>
    猜你喜欢
    • 2016-12-14
    • 2012-04-29
    • 2016-12-09
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2018-01-09
    • 2017-08-02
    相关资源
    最近更新 更多