部署在IIS上的Next.js站点HTTP访问出现403 Forbidden错误
Next.js部署IIS后HTTP访问静态资源403的原因及解决办法
1. 静态目录权限配置不一致
HTTPS站点的_next/static目录可能已正确配置访问权限,但HTTP站点未设置。IIS默认需要IUSR或IIS_IUSRS用户拥有该目录的读取权限,否则会返回403。
- 操作:在IIS管理器中找到HTTP站点,右键
_next/static目录 → 打开权限面板,添加或确认IUSR、IIS_IUSRS用户的读取权限。
2. URL重写规则缺失
Next.js的静态资源依赖URL重写规则来正确路由,若HTTP站点未配置对应规则,请求会被IIS拦截。HTTPS站点可能已配置完整规则,所以能正常访问。
- 操作:给HTTP站点添加针对静态资源的重写规则,示例配置(可在
web.config中添加):
<rule name="Allow Next.js Static Chunks" stopProcessing="true"> <match url="^_next/static/(.*)" /> <action type="Rewrite" url="{R:0}" /> </rule>
3. HTTP站点的请求过滤限制
IIS的请求过滤模块可能在HTTP站点中设置了阻止_next/static路径的规则,而HTTPS站点未启用该限制。
- 操作:打开HTTP站点的请求过滤功能,检查隐藏段或自定义规则,移除针对
_next/static的阻止配置。
4. 身份验证设置差异
若HTTP站点禁用了匿名身份验证,静态资源请求无法通过身份校验,会返回403;而HTTPS站点可能启用了匿名验证。
- 操作:在HTTP站点的身份验证设置中,确保匿名身份验证处于启用状态。
5. 安全响应头限制
HTTP站点可能配置了仅允许HTTPS资源加载的安全策略(如CSP),或者设置了限制静态资源访问的响应头,导致HTTP下静态资源加载被拒绝。
- 操作:检查HTTP站点的HTTP响应头配置,移除不必要的限制规则,确保CSP策略允许HTTP环境下加载
_next/static资源。
内容的提问来源于stack exchange,提问作者SajjadZare
相关产品推荐
相关产品推荐

