对于不存在的端点,如何使无服务器返回404而不是403?

时间:2017-09-11 17:44:22

标签: serverless-framework

我按照说明创建了Hello World应用程序,尝试了无服务器框架。一切正常,调用[url]/dev/hello-world返回200响应,json输出符合预期。

默认情况下,对于不存在的端点的响应看起来像是带有json {"message":"Missing Authentication Token"}的403 http状态代码。

我想使用该框架托管网站。 对于不存在的端点,有没有办法让无服务器返回404而不是403?

2 个答案:

答案 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