【发布时间】: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