我按照说明创建了Hello World应用程序,尝试了无服务器框架。一切正常,调用[url]/dev/hello-world
返回200响应,json输出符合预期。
默认情况下,对于不存在的端点的响应看起来像是带有json {"message":"Missing Authentication Token"}
的403 http状态代码。
我想使用该框架托管网站。 对于不存在的端点,有没有办法让无服务器返回404而不是403?
答案 0 :(得分:4)
返回403代替404是deliberate design decision。
这是许多其他AWS API(最值得注意的是S3)中使用的模式。在S3中,如果用户有权查看密钥的存在(通过ListBucket权限),则返回404;否则将返回403。由于API网关在方法级别启用权限,因此我们无法知道是否应允许用户了解API资源级别的存在,因此默认为403.
您可以选择使用{proxy +}模式捕获所有缺少的API方法。
events:
- http:
path: {proxy+} # catch any path not specified elsewhere
method: get # or change to any method if you prefer
答案 1 :(得分:0)
我做了一些与不涉及API调用的事情有所不同,但这是我在添加的CloudFrontDistribution部分中使用无服务器来托管网站的最终目标。
CustomErrorResponses:
ErrorCode: 403
ResponseCode: 404
ResponsePagePath: /404.html