我需要从我的 AWS Lambda 函数重定向到另一个端点。 我已在 AWS Lambda 函数中实现了以下代码,并尝试重定向到在外部系统中作为 POST 端点实现的端点。我不知道如何传递请求正文。
Python 代码正在尝试重定向,但我不确定如何传递"new"请求正文,因为它是 POST 端点,我不希望传输原始正文。
请在重定向的目标处查看 Java 错误。
def lambda_handler(event, context):
# Create Dictionary
value = {
"language": "python33",
"greetings" : "Greetings... Hope you have been redirected"
}
# Dictionary to JSON Object using dumps() method
# Return JSON Object
return {
"headers": {"Location": "http://localhost:8080/urlcallback",'Content-Type':'application/json' ,},
'statusCode': 307,
'body': json.dumps(value)
}
正在调用重定向端点,但 Java Spring 启动日志中出现以下错误:
{
"timestamp": 1671820676750,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.http.converter.HttpMessageNotReadableException",
"message": "Required request body is missing: public java.util.Map<java.lang.String, java.lang.String> my.sample.service.controller.PingController.urlcallback(java.lang.String)",
"path": "/urlcallback"
}
我将非常感谢任何建议或指示,当我检查 Stack Overflow 时找不到任何建议或指示。
注意:
我首先尝试使用 301 和 302 的基本重定向,这适用于 GET 调用,但现在我在使用 POST 端点和请求正文进行重定向时遇到错误,因为我有一些敏感数据要传输。
最佳答案
I am not sure how to pass a "new" Request Body as it is a POST Endpoint, I don't want the original body to get transmitted.
基于HTTP 307 docs这是不可能的:“307保证发出重定向请求时方法和主体不会改变”
您可以尝试HTTP 303并将请求类型更改为 GET 以从请求中删除正文。
关于python - 如何在使用 AWS Lambda 中的 POST 方法和正文执行 307 重定向时传递请求正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74903301/