【发布时间】:2020-04-18 15:22:44
【问题描述】:
我正在挖掘网络并一直试图在以下情况下找到我缺少的东西: 我试图解决的基本问题是:当http://example.com/login?target=http://google.com 被调用时,用户被重定向到一个OAuth 登录页面,其状态引用了目标查询参数中的url。
所以:http://example.com/login?target=http://google.com
将被重定向到
http://authenticator.com/login?type=...&redirect_uri=...&client_id=...&state=http://google.com
我可以用 Lambda 做到这一点,但我觉得没有必要,可以单独使用 API 网关。
首先,我创建了 /login 资源和 GET 方法,并在其中添加了一个模拟集成。
我在方法响应处设置了 302:
最后我添加了集成响应:
但是,当我测试该方法时,缺少 Location 标头。如果我将静态字符串放在集成响应中的 Location 标头中,它可以工作,但是无论我在标头映射中尝试什么,它都不起作用。
我在集成请求映射中尝试过的事情:
{
"statusCode": 200,
"headers": {"target": "https://google.com"}
}
{
"statusCode": 200,
"target": "https://google.com"
}
我似乎 integration.response.body.target 或 integration.response.header.target 总是空的。
根据文档,headers 属性可以是集成响应的一部分,但我无法从我在集成请求中设置的映射模板中获取任何值。
知道我做错了什么吗?
【问题讨论】:
-
嗨。您是否找到了一种将响应正文与标头映射的方法。我面临与空白空间相同的问题
-
@Jennings 我在 12 月底花了几个小时在这个上,但从那以后我没有检查过。最后我最终创建了一个 Lambda 函数,它做同样的事情。
标签: amazon-web-services aws-api-gateway