首页 > 解决方案 > 拒绝在框架中显示“http://127.0.0.1:8000/files/xxx.pdf”,因为它在 Node Express API 中将“X-Frame-Options”设置为“sameorigin”

问题描述

正如在这个问题中回答的那样,应用了解决方案,但仍然无法将 PDF 绑定到其他源项目的 iframe 中。查看我收到的控制台错误。

我申请的解决方案:

app.use(helmet.frameguard({
  action: 'allow-from',
  domain: 'http://localhost:4200'
}))

还有其他问题还是我做错了什么?

谢谢

标签: javascriptnode.jsexpress

解决方案


您可以使用

某些浏览器不支持 Helmet.js 功能,即 ALLOW-FROM 功能。例如,您可能正在使用的 Safari。

在此处检查 ALLOW-FROM 的兼容性:此处

app.use(frameguard({ action: 'sameorigin' })) // Defaults 

仅从快速使用的目录中提供静态文件(Express Servering Static Files)

创建一个公用文件夹,将项目放入其中。

然后,您将使用http://localhost:8000/name.pdf

app.use(express.static('public'))

由于如果您从另一个目录启动应用程序,路径是相对的,您可以采用这种方法。

然后,您将使用http://localhost:8000/static/name.pdf

app.use('/static', express.static(path.join(__dirname, 'public')))

推荐阅读