【问题标题】:AWS apigateway and iframe tagsAWS apigateway 和 iframe 标签
【发布时间】:2018-01-07 12:45:18
【问题描述】:

我已经使用带有 Lambda 函数后端的 AWS apigateway 建立了一个简单的网站。

apigateway 设置为返回 'text/html' Content-Type,它一直工作得很好。

我的最新进展是向网站添加一些“iframe”标签,以嵌入来自另一个(非亚马逊)域的内容。

现在,当页面在浏览器中呈现时,iframe 引用的内容不会显示。然而,当我将 html 保存在本地并在浏览​​器中打开时,iframe 内容会按原样显示 - 这证明 html 代码很好。

AWS 是否有某种安全措施来阻止来自其他域的嵌入内容?如果是这样,我需要更改什么才能允许这样做?

【问题讨论】:

  • iframe 由浏览器加载。您的浏览器加载 HTML,查看 iframe 标记,然后与 iframe 指向的服务器进行交互。 AWS 没有阻止任何事情。我的猜测是您尝试从中加载 iframe 内容的服务器正在阻止它,类似于:stackoverflow.com/questions/38068019/… 您需要打开浏览器的开发人员工具控制台并获取实际的错误或警告消息,以便找出确切的问题是。
  • 是的。看起来它的浏览器中的跨源安全性阻止了嵌入的内容。感谢您的建议
  • 我试图通过在 apigateway 的响应中设置以下标头来解决此问题: Access-Control-Allow-Headers:'Origin, X-Requested-With, Content-Type, Accept' Access-Control-Allow-Origin:'*' Access-Control-Allow-Methods: 'GET,PUT,POST,DELETE,OPTIONS' 当我在开发模式下运行 Firefox 时,我可以看到响应中的标头设置正确但是iframe 仍未显示。关于我如何解决这个问题(在服务器端)的任何想法?
  • 提供 iframe 内容的服务器需要设置这些标头。
  • 嗨。感谢您的回复。真的是这样吗?这对我来说没有意义。通过在 apigateway 中设置这些标头,我允许嵌入来自另一个域的内容。我无法控制其他域来设置这些标头。我在apigateway中设置了一个模拟服务来演示这个问题:j9crd7qmbd.execute-api.us-west-1.amazonaws.com/prod

标签: amazon-web-services aws-api-gateway


【解决方案1】:

我发现问题在于嵌入式链接使用的是 http,但 apigateway 提供的页面使用的是 https。

Mozilla 文档将此称为“混合内容”。幸运的是,我从中嵌入的站点也通过 https 提供了相同的站点,因此我刚刚修改了 URL 以使用它。

感谢您的帮助

【讨论】:

    猜你喜欢
    • 2017-09-21
    • 2021-09-05
    • 2021-11-15
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2017-01-07
    • 2018-01-09
    • 2021-06-19
    相关资源
    最近更新 更多