You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure App Service REST API如何处理URL参数中%2F斜杠提前解码问题

根本解决方案

该问题的核心原因是Azure App Service前端反向代理(Windows环境为IIS、Linux环境为NGINX)默认会自动解码URL路径中的%2F为/,导致转发到应用进程时路径被错误拆分,按你使用的托管环境选择对应配置即可:

Windows 托管环境配置

  1. 在项目根目录新建/修改web.config文件
  2. 开启允许双转义配置,在<system.webServer>节点下添加:
<security>
  <requestFiltering allowDoubleEscaping="true" />
</security>
  1. 添加URL重写规则保留原始编码路径,继续在<system.webServer>节点下添加:
<rewrite>
  <rules>
    <rule name="PreserveEncodedSlashes" stopProcessing="false">
      <match url=".*" />
      <conditions>
        <add input="{UNENCODED_URL}" pattern="(.*)" />
      </conditions>
      <action type="Rewrite" url="{C:1}" appendQueryString="true" />
    </rule>
  </rules>
</rewrite>
  1. 若使用.NET运行栈,还需要在<system.web>节点下添加:
<httpRuntime requestPathInvalidCharacters="" />

Linux 托管环境配置

  1. 在项目根目录新建自定义nginx.conf配置文件,修改转发规则使用原始未解码的$request_uri传递路径,核心配置片段如下:
server {
    listen 80;
    server_name _;
    root /home/site/wwwroot;

    location / {
        # 此处替换为你应用实际的监听地址和端口,使用$request_uri传递原始路径
        proxy_pass http://127.0.0.1:8000$request_uri;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  1. 进入Azure App Service门户的「配置」-「常规设置」页,修改启动命令,替换默认NGINX配置后再启动应用,示例(Python栈):
cp /home/site/wwwroot/nginx.conf /etc/nginx/sites-available/default && nginx -s reload && gunicorn --bind=0.0.0.0:8000 app:app
  1. Java等其他运行栈仅需调整proxy_pass对应的上游地址即可,无需额外修改应用配置。

配置修改完成后重启App Service即可生效,编码斜杠%2F会作为路径参数的一部分原封不动传递到应用代码中,不会被提前解码为路径分隔符。

内容的提问来源于stack exchange,提问作者freedev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:39:01