【问题标题】:How to get client full url in AWS lambda through AWS gateway requested by <script src="***"> tag如何通过 <script src="***"> 标签请求的 AWS 网关在 AWS lambda 中获取客户端完整 url
【发布时间】:2022-01-23 17:57:12
【问题描述】:

我正在使用 html 脚本标签来 ping AWS 网关端点以触发 AWS lambda 中的函数。

在这个 lambda 函数中,我需要检索原始客户端的完整 url。 我可以获取引用数据,但不知道如何获取完整的 url。

我试图查看“事件”对象中是否有“来源”信息,但没有这样的数据。

exports.handler = async (event, context) => {
  return {
    statusCode: 200,
    body: "console.log(" +JSON.stringify(event) +","+JSON.stringify(context) +")"
  };  
}

这是 ping http api 网关的客户端代码 index.html

<html>
  <script src="http api gateway endpoint" defer async />
  <body></body>
</html>

现在如何在 lambda 函数中获取客户端完整 url?

【问题讨论】:

  • 仅供参考:亚马逊 AWS 目前已关闭,因此您可能会遇到问题

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


【解决方案1】:

在引荐来源标头中发送的信息仅限于security reasons。您可以使用a headerreferrerpolicy 属性进行调整。

请注意,&lt;script&gt; 元素不是 void 元素。结束标签是强制性的。

<script src="http api gateway endpoint" defer async referrerpolicy"unsafe-url"></script>

您还可以动态生成&lt;script&gt; 元素并在查询字符串中传递来自window.location 的数据。

【讨论】:

  • 谢谢!有效!我正在尝试根据原始 url 下载存储在 S3 中的 JS 文件并动态运行脚本。但是,这种做法似乎会通过暴露引用者来损害安全性。您还有其他推荐的方式来满足此类要求吗?
  • “但是,这种做法似乎通过暴露引用者来损害安全性。” — 这就是为什么您需要小心将其暴露给谁(以及为什么使用该属性对一个特定元素执行此操作比全局执行此操作更安全)
  • "您还有其他推荐的方法来满足此类要求吗?" —请参阅此答案的最后一段……但最终结果是相同的,因此这样做不会获得任何安全收益。
猜你喜欢
  • 2021-08-16
  • 2019-12-18
  • 2020-10-01
  • 2022-01-27
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 2020-07-29
相关资源
最近更新 更多