Python Djang全栈开发中问题记录

1、引用bootstrap5现成前端框架时,iframe嵌入访问不了网页,报错failed to load response data: No resource with given identifier found,控制台报错:Refused to display 'http://127.0.0.1:8000/' in a frame because it set 'X-Frame-Options' to 'deny'.,直接访问地址是正常展示的

问题原因:

错误信息"Refused to display 'http://127.0.0.1:8000/' in a frame because it set 'X-Frame-Options' to 'deny'"表示由于设置了'X-Frame-Options'为'deny',所以拒绝在一个框架中显示'http://127.0.0.1:8000/'。

这个错误通常是出于安全考虑而设置的。'X-Frame-Options'是一个HTTP响应头,用来控制网页是否允许被嵌入到iframe(框架)中。当设置为'deny'时,浏览器将拒绝在框架中显示该网页。

要解决这个问题,你可以尝试以下方法:

  1. 检查网页的服务器配置:确保在服务器上正确配置了'X-Frame-Options'头。如果你有权限访问服务器配置,可以将其设置为允许通过修改为'SAMEORIGIN'或'ALLOW-FROM'并指定允许的来源。

  2. 使用其他方式加载内容:如果你无法更改服务器配置,可以考虑使用其他方式加载内容,例如通过AJAX请求获取数据并在页面中展示。

请注意,如果网页的'X-Frame-Options'设置为'deny'是出于安全考虑,那么在没有合法授权的情况下不应该绕过此限制。

 

解决办法:

在Django中,你可以通过修改中间件设置来解决"Refused to display 'http://127.0.0.1:8000/' in a frame because it set 'X-Frame-Options' to 'deny'"的问题。

要修改 'X-Frame-Options' 的值,你可以在 Django 项目的 settings.py 文件中进行设置。以下是两种常见的选项:

  1. 允许所有来源嵌入:

    • 找到 MIDDLEWARE 设置的位置。
    • 在该设置的下方添加以下代码:
      python复制代码
      X_FRAME_OPTIONS = 'ALLOWALL'
      
  2. 允许指定来源嵌入:

    • 找到 MIDDLEWARE 设置的位置。
    • 在该设置的下方添加以下代码,并替换 'http://example.com' 为允许的来源:
      python复制代码
      X_FRAME_OPTIONS = 'ALLOW-FROM http://example.com'
      

请注意,在设置中使用 'ALLOWALL''ALLOW-FROM' 都可以改变 'X-Frame-Options' 的值。将其中一个选项与适当的来源配置结合使用,以满足你的需求。

完成后,保存文件并重新启动 Django 开发服务器。这样就修改了 'X-Frame-Options' 值,从而允许嵌入你的网页到其他框架中。

最后,请记住在生产环境中,根据安全需求和评估风险,仔细考虑如何正确设置 'X-Frame-Options' 值。

posted @ 2023-08-17 14:22  BookPen  阅读(140)  评论(0编辑  收藏  举报