【问题标题】:Flask - Change Referrer Policy to 'no-referrer'?Flask - 将推荐人政策更改为“无推荐人”?
【发布时间】:2021-05-28 05:25:14
【问题描述】:

我想在我的网站上嵌入一个本地托管的 iframe,但我不能,因为引荐来源网址政策设置为“strict-origin-when-cross-origin”。

iframe 的 src 来自一个旨在嵌入 iframe 的网站,因此来自 src 的响应标头没有任何限制。我也知道这一点,因为如果我像这样将 src 的链接直接放入我的 iframe 中:

 <iframe id="panoramic" style="border: 4px solid white" frameBorder="0" v-bind:src="https://momento360.com/e/u/47de8a9ca774487aa1f2bffb9c9fcc94?utm_campaign=embed&utm_source=other&heading=0&pitch=0&field-of-view=75&size=medium"></iframe>

它可以正常工作。问题是 iframe src 是反应式的(使用 Vue),所以当它尝试更新到新的 src 时,我的浏览器会因为我网站上的引荐来源网址政策而阻止它。我已经用默认为“no-referrer”的浏览器对此进行了测试,它会加载,但不幸的是,chrome 默认采用严格的推荐人策略。

我正在使用 Flask 来处理路由,所以我认为有一种方法可以轻松更改此设置,但我发现没有。我找到了Flask-Talisman,但此扩展程序的默认设置非常严格,理想情况下我想要一种更轻量级的方式来更改此策略。

这是我希望有无推荐人政策的页面的路由处理:

@app.route('/scene_build')
def sceneBuilder():
    resp = Response(render_template('scene_build.html', profile = session['userData']))
    resp.headers["Referrer-Policy"] = 'no-referrer'
    return resp

【问题讨论】:

    标签: javascript flask iframe content-security-policy referrer-policy


    【解决方案1】:

    解决了这个问题。原来socketIO默认禁用cors,这就是为什么我不能以传统方式设置Referrer-Policy。我将 socketIO 实例化的参数更改为 socketio = SocketIO(app, cors_allowed_origins="*") 并且它可以工作。

    【讨论】:

      【解决方案2】:

      如果您想为所有请求设置Referrer-Policy 标头,您可以这样做:

      from flask import Flask
      
      app = Flask(__name__)
      
      @app.after_request
      def set_headers(response):
          response.headers["Referrer-Policy"] = 'no-referrer'
          return response
      
      @app.route('/')
      def index():
          return 'Hello world!'
      
      if __name__ == '__main__':
          app.run()
      

      如果要设置特定端点的标头:

      from flask import Flask, make_response
      
      app = Flask(__name__)
      
      @app.route('/')
      def index():
          response = make_response('Hello world!')
          response.headers["Referrer-Policy"] = 'no-referrer'
          return response
      
      if __name__ == '__main__':
          app.run()
      

      请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy 了解有效的推荐人政策。

      【讨论】:

      • 我实际上已经尝试过这个解决方案,但由于某种原因它没有修改 Referrer-Policy 标头。我可以以您描述的相同方式更改其他标头(即resp.headers["Access-Control-Allow-Origin"] = '*'),但我似乎无法以相同的方式更改安全标头,这使我相信我需要使用 Flask-Talisman。跨度>
      猜你喜欢
      • 2021-07-12
      • 2019-07-20
      • 1970-01-01
      • 2021-02-12
      • 2012-12-19
      • 2011-01-03
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多