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

Flutter Web项目部署至IIS访问报HTTP 401.3未授权错误咨询

问题根因

HTTP 401.3错误属于IIS静态资源访问阶段的权限拦截,和Flutter框架逻辑、项目使用的Firebase依赖没有直接关系。
同IIS下其他站点正常,是因为存量站点的目录权限已经完成配置;本次新部署的Flutter站点通过zip包解压上传,解压后的文件默认携带压缩时本地开发环境的权限配置,不会自动继承服务器IIS站点目录的访问规则,导致IIS运行站点所用的账号没有读取构建产物的权限,直接触发访问拦截。
Firebase相关逻辑是页面加载完成后在用户浏览器端运行的,不会在IIS返回静态资源阶段触发权限问题,不需要在IIS侧给Firebase做特殊配置。

排查修复步骤
  • 确认站点访问身份:打开IIS管理器,定位到对应Flutter站点,双击「身份验证」功能,选中「匿名身份验证」后点击右侧操作栏的「编辑」,记录当前配置的身份是默认的IUSR账号,还是当前站点对应的应用程序池标识。
  • 配置目录ACL权限:找到Flutter构建产物存放的站点根目录,右键打开「属性」-「安全」选项卡,点击「编辑」-「添加」,把上一步记录的账号加入权限列表,给该账号授予读取和执行、列出文件夹内容、读取三个权限,勾选「替换所有子对象的权限项」选项,应用后等待权限递归配置完成。
  • 解除文件锁定:从其他设备传输到服务器的zip包解压后,内部文件会被Windows标记为「来自外部网络」,额外触发访问限制。在站点根目录打开PowerShell,执行命令Get-ChildItem -Recurse | Unblock-File,批量解除所有文件的锁定状态。
  • 补全IIS配置:Flutter Web构建产物包含.wasm、.woff、.woff2等特殊后缀文件,IIS默认可能没有配置对应MIME类型,加上前端路由需要重写规则,直接在站点根目录新建web.config文件,写入以下配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <remove fileExtension=".wasm" />
            <mimeMap fileExtension=".wasm" mimeType="application/wasm" />
            <remove fileExtension=".woff" />
            <mimeMap fileExtension=".woff" mimeType="font/woff" />
            <remove fileExtension=".woff2" />
            <mimeMap fileExtension=".woff2" mimeType="font/woff2" />
        </staticContent>
        <rewrite>
            <rules>
                <rule name="Flutter Route Rewrite" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/index.html" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
  • 配置完成后,在IIS管理器中找到站点对应的应用程序池,执行「回收」操作清除权限缓存,重启站点后重新访问即可。

页面可以正常打开后,如果出现Firebase登录/读写报错,再去Firebase控制台把当前站点的域名加入授权域名列表即可,这一步和当前的401.3错误无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:18:23