我正在尝试将AWS Api Gateway设置为我实际部署的API的反向代理。我的理解是,我通过创建“代理”资源,然后指定我的http端点URL来完成此操作-如此处所述,通过代理资源创建和测试具有HTTP代理集成的API
当我尝试通过资源编辑器中的“测试”功能使用API时,此方法可以正常工作。我可以使用GET方法调用任何公开的资源,并查看成功的响应。
但是,当我部署API Gateway API时,我无法再使用“调用URL”访问任何内容,它给了我-我得到的只是:
{
"Message": "No HTTP resource was found that matches the request URI 'http://<myuniqueid>.execute-api.eu-west-1.amazonaws.com/api/Sector/100'.",
"MessageDetail": "No type was found that matches the controller named 'Sector'."
}
如果从“集成请求”中删除“使用HTTP代理集成”复选框,则可以正常使用,但是为什么它不能作为代理工作?
我怀疑这是由HTTP代理集成的已知问题引起的。当您使用HTTP代理集成时,API网关会将所有标头传递到集成端点,包括HOST标头。许多现有的http端点都需要使用与其DNS名称相匹配的HOST标头,在这种情况下,通过API网关的HOST标头传递可能会使端点混淆。
更新:我们确定了此问题的解决方法。
在您的集成请求中,显式添加一个名为“ Host”的标头,并为其指定集成端点DNS名称的值。这会将从传入的客户端请求转发的Host标头替换为您指定的Host标头。这应该允许您的后端端点正常运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句