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

Azure App Service中Post/Put/Patch请求授权失效问题求助

排查方向
  • 检查Azure App Service的HTTPS与Cookie安全配置
    Azure默认强制HTTPS,若本地开发用HTTP,Cookie的Secure、SameSite属性可能与生产环境不匹配。确保Program.cs/Startup.cs中Cookie认证配置里:

    • SecurePolicy设为CookieSecurePolicy.Always(适配HTTPS环境)
    • SameSite根据部署场景调整:同域用SameSiteMode.Lax,跨域则设SameSiteMode.None(需配合Secure属性)
      同时确认UseHttpsRedirection开启后,重定向过程未丢失Cookie。
  • 验证CSRF(Antiforgery)保护逻辑
    ASP.NET Core默认对非Get请求启用CSRF拦截,若前端未正确传递令牌,会导致身份验证失效:

    • 后端检查AddAntiforgery配置,确认令牌的Cookie名、请求头名设置正确
    • 前端需从Cookie读取XSRF-TOKEN,并在Post/Put/Patch请求头中携带X-XSRF-TOKEN
    • 排查Azure代理是否修改请求头,导致令牌验证失败
  • 开启ARR会话亲和性
    若App Service启用多实例,未开启ARR Affinity会导致非Get请求被路由到不同实例,Cookie无法被识别。在Azure门户的App Service「配置→常规设置」中,确认「ARR Affinity」为开启状态。

  • 查看Azure日志捕获细节
    打开App Service的日志流(Log Stream),或下载应用日志,重点查看身份验证、Antiforgery中间件的Debug级日志。可在appsettings.json中调整日志级别:

    {
      "Logging": {
        "LogLevel": {
          "Microsoft.AspNetCore.Authentication": "Debug",
          "Microsoft.AspNetCore.Antiforgery": "Debug"
        }
      }
    }
    

    从中获取Cookie验证失败的具体原因(如签名不匹配、路径/域不匹配、过期等)。

  • 确认Cookie的路径与域配置
    检查Cookie认证配置中的Cookie.Path和Cookie.Domain是否与Azure域名匹配。例如API部署在xxx.azurewebsites.net,需确保Cookie.Domain设为.azurewebsites.net或具体域名,避免Cookie因路径/域不匹配无法生效。

  • 配置ForwardedHeaders中间件
    Azure App Service运行在反向代理后,若未配置ForwardedHeaders,应用会误判请求为HTTP,拒绝Secure Cookie。在Program.cs中添加:

    app.UseForwardedHeaders(new ForwardedHeadersOptions
    {
        ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
    });
    
  • 再次验证前端Cookie传递
    用浏览器开发者工具对比Get与非Get请求的Cookie头,确认身份认证Cookie(如.AspNetCore.Identity.Application)是否存在且值一致。跨域场景下,Vue的axios需配置axios.defaults.withCredentials = true,否则Cookie不会被携带到非Get请求中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:30:45