IIS运行环境下的网页无法从NAS调取存储的图片资源
报错根因
- 浏览器对http/https协议加载的web页面有强制安全限制,不允许页面直接加载
file://开头的本地系统资源。你当前写的/NASFolder.lnk/' + orderNummer + 'a.jpg'路径,本质是引用了IIS站点目录下的Windows快捷方式文件,web服务器不会解析这个.lnk的指向跳转,最终路径被解析成本地Y盘的file协议地址,直接触发安全拦截,也就是你看到的Not allowed to load local resource报错。 - 直接在web目录下放.lnk快捷方式映射NAS路径的操作,对IIS这类web服务器是完全无效的,web服务没有权限也不会去读取本地快捷方式的跳转配置。
可落地的配置方案
- 放弃使用.lnk快捷方式的方案,直接在IIS目标站点下新建虚拟目录:别名设置为
NASImages,物理路径直接指向你的NAS存储位置,可以填映射的本地盘符路径Y:\NASFolder,也可以直接填UNC网络路径\\NAS设备IP\图片共享文件夹。 - 配置对应权限:给IIS对应站点的应用程序池运行身份,授予NAS共享路径的只读权限;同时在虚拟目录的IIS配置中,关闭脚本执行权限,仅开放静态文件读取权限,避免安全风险。
- 修改前端资源路径,替换掉原来拼接的.lnk路径:
image.setAttribute('src', '/NASImages/' + orderNummer + 'a.jpg'); - 校验加载规则:最终生成的图片URL必须是http/https协议开头的web地址,不能出现file协议开头的本地路径,才能被浏览器正常渲染。
补充注意:如果NAS是域环境共享,需要确保IIS运行身份有对应NAS的读权限,不要盲目开启全量匿名访问,仅开放图片存储路径的读权限即可。
内容的提问来源于stack exchange,提问作者Prog404
相关产品推荐
相关产品推荐

