如何禁用Azure Web Apps for Containers的URL自动反转义功能
Azure Web Apps for Containers URL中%2F自动反转义问题解决方案
你遇到的是Azure App Service前端反向代理层的默认行为问题,以下是可行的配置方案:
- 优先使用官方内置配置项禁用自动解码
在Azure门户中打开你的Web应用资源,依次进入「配置」-「应用程序设置」,新增如下配置:
配置名:WEBSITE_DONT_DECODE_PERCENT_ENCODED_SLASHES
配置值:1
保存配置后重启应用即可生效。该配置会直接禁止Azure前端代理层对URL中%2F的自动反转义操作,原始转义后的请求路径会完整传递到你的容器内应用,你可以在应用内自行处理转义逻辑。 - 检查容器内反向代理配置(如适用)
如果你的容器内部还部署了NGINX等反向代理层做请求转发,需要确认转发规则使用原始请求URI而非解码后的URI:
比如NGINX配置中proxy_pass规则需要使用$request_uri变量(原始未解码的请求路径),不要使用$uri变量(已自动解码的路径),示例配置如下:location / { proxy_pass http://localhost:8080$request_uri; } - 无需尝试Windows平台的web.config方案
Linux容器场景下App Service的前端代理不是IIS,web.config配置完全不会生效,不需要额外调试该配置。
配置完成后即可正常接收携带%2F的转义请求,不会出现路径被拆分导致的404问题。
内容的提问来源于stack exchange,提问作者Johannes Loepelmann
相关产品推荐
相关产品推荐

