Windows Server 2012 R2 IIS环境下AJAX请求无返回问题排查
Hey,我来帮你梳理下这个AJAX请求失败的问题,结合你提到的IIS配置错误,咱们从几个常见的配置坑来排查和修复:
问题诊断与修复方案
你的场景是Windows Server 2012 R2(6.2)上通过IIS搭建网站,默认文档目录下有test.html和ajax_info.txt,但点击按钮触发AJAX请求时无法获取内容,核心问题确实大概率出在IIS的配置细节上。
常见的IIS配置错误及修复步骤
1. 未启用静态文件处理模块
.txt属于静态文件,IIS默认可能未开启静态文件支持模块,导致服务器无法处理这类文件的请求:
- 打开IIS管理器,选中你的目标网站
- 在右侧功能视图中找到静态文件,双击进入
- 如果模块未启用,点击右侧操作栏的「启用」(若显示「禁用」则说明已启用)
- 也可以用命令行快速启用:
%windir%\system32\inetsrv\appcmd set config /section:staticContent /enabled:true
2. AJAX请求路径的绝对路径问题
你代码里写的是xmlhttp.open("GET","http://localhost/ajax_info.txt",true);,如果你的网站不是绑定在默认80端口(比如用了自定义端口)、或者绑定了特定域名,这个绝对路径会导致请求不匹配,甚至触发跨域问题。建议改成相对路径:
xmlhttp.open("GET","ajax_info.txt",true);
相对路径会自动匹配当前页面所在的目录,避免端口/域名不匹配的问题。
3. 请求筛选规则阻止了.txt文件
IIS的请求筛选可能默认阻止了某些文件扩展名的请求:
- 在IIS管理器中选中网站,打开请求筛选
- 切换到「文件扩展名」标签,检查
.txt是否在拒绝列表中:- 如果在,选中它并点击右侧的「移除」
- 如果不在,点击「允许添加」,手动添加
.txt扩展名并保存
4. 文件权限不足
确保IIS应用池的身份有读取ajax_info.txt文件的权限:
- 找到网站的物理目录,右键点击→「属性」→「安全」标签
- 点击「编辑」→「添加」,输入
IIS AppPool\你的应用池名称(比如默认应用池是IIS AppPool\DefaultAppPool),点击「检查名称」确认后添加 - 给这个身份分配读取权限,点击确定保存
验证方法
修复配置后,先做基础验证:
- 直接在浏览器地址栏输入
http://你的网站地址/ajax_info.txt,确认能正常显示文件内容 - 刷新
test.html页面,点击「Change Content」按钮,测试AJAX请求是否正常工作
内容的提问来源于stack exchange,提问作者Mirza
相关产品推荐
相关产品推荐

