api 网关 lambda return 应该如何重定向 URL 用于登录
how should an api gateway lambda return a redirect URL for login
我的 Lambda 函数 returns html 页。
我能够从节点 js 10.x 成功 return 一个完整的 html。
因此,如果我使用 api 网关 url 访问我的 lambda
https://2kiz3ttah.execute-api.eu-west-1.amazonaws.com/stage/login
如果未登录,lambda 应该 return 重定向 URL。
如何 return 在浏览器中打开 URL,而不是呈现 HTML 页面。
在您的 Lambda 中,您只需要 return 以下内容:
{
'statusCode': 302,
'headers': {
'Location': 'https://redirect.example.com/path'
}
}
其中 https://redirect.exaaple.com/path
是 URL 你的路径应该被重定向到。
如果它是 API 网关中的 LAMBDA_PROXY
集成,这应该适用于您的 Lambda。
可获得更多信息 here。
我猜你有类似的东西:
// ...your code
return {
statusCode: 200,
headers: {
'Content-Type': 'text/html',
},
body: html,
};
因此,根据您的自定义逻辑 return 3xx 应该很容易。如果您的问题是基于认知身份验证,那么我认为您不走运,因为它 api 网关将 return 403 在您可以执行任何操作之前。在这种情况下,您可以尝试实现自定义 lambda 授权方,以便实现自定义逻辑
我的 Lambda 函数 returns html 页。 我能够从节点 js 10.x 成功 return 一个完整的 html。 因此,如果我使用 api 网关 url 访问我的 lambda https://2kiz3ttah.execute-api.eu-west-1.amazonaws.com/stage/login 如果未登录,lambda 应该 return 重定向 URL。 如何 return 在浏览器中打开 URL,而不是呈现 HTML 页面。
在您的 Lambda 中,您只需要 return 以下内容:
{
'statusCode': 302,
'headers': {
'Location': 'https://redirect.example.com/path'
}
}
其中 https://redirect.exaaple.com/path
是 URL 你的路径应该被重定向到。
如果它是 API 网关中的 LAMBDA_PROXY
集成,这应该适用于您的 Lambda。
可获得更多信息 here。
我猜你有类似的东西:
// ...your code
return {
statusCode: 200,
headers: {
'Content-Type': 'text/html',
},
body: html,
};
因此,根据您的自定义逻辑 return 3xx 应该很容易。如果您的问题是基于认知身份验证,那么我认为您不走运,因为它 api 网关将 return 403 在您可以执行任何操作之前。在这种情况下,您可以尝试实现自定义 lambda 授权方,以便实现自定义逻辑