AWS API Gateway含斜杠的URL参数配置方案咨询
在AWS API Gateway中配置含斜杠的路径参数
问题描述
我需要配置如下格式的URL:/api/v1/doc/{id},其中参数id的值可能为10.10/M11这类包含斜杠的内容。尝试用SAM配置后返回403错误,错误信息如下:
{ "message": "Missing Authentication Token" }
解决方案
AWS API Gateway默认会把路径中的斜杠当作路径分隔符,直接用普通路径参数会匹配失败,进而触发认证检查返回403。可以通过以下两种方式解决:
1. 使用通配符路径(贪婪匹配)
修改SAM模板里的API路径为/api/v1/doc/{id+},这里的+表示贪婪匹配,会把斜杠及之后的所有内容都作为id参数的值。示例SAM配置片段:
Resources: MyApi: Type: AWS::Serverless::Api Properties: StageName: prod DefinitionBody: swagger: '2.0' paths: /api/v1/doc/{id+}: get: x-amazon-apigateway-integration: uri: !Sub arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${MyFunction.Arn}/invocations httpMethod: POST type: aws_proxy
2. 开启“允许路径中的斜杠”(仅REST API适用)
如果用的是REST API而非HTTP API,可以在控制台直接设置:
- 进入API Gateway控制台,找到目标API和对应资源
- 选中
/doc下的{id}资源,进入“资源设置” - 勾选“允许路径中的斜杠”选项,保存后重新部署API
关于403错误的说明
你碰到的403错误,本质是API Gateway没匹配到正确路径,触发了默认的认证校验(如果API配置了认证规则)。调整路径配置后,路径匹配成功,就能正常路由到后端服务,该错误会消失。
内容的提问来源于stack exchange,提问作者user1187968
相关产品推荐
相关产品推荐

