XHR在本地IIS服务器正常运行,静态IP访问时失效
解决Windows Server 2012 R2 IIS公网访问时XHR请求无响应的问题
根据你描述的情况——本地环境下XHR请求能正常获取内容,但通过静态公网IP访问时无任何响应,我整理了几个最可能的排查和解决方向:
1. 确认IIS站点的绑定配置
首先要确保你的IIS站点没有仅绑定内网IP或localhost,否则公网请求无法被IIS接收:
- 打开IIS管理器,找到目标站点,右键选择「编辑绑定」
- 检查HTTP/HTTPS绑定的「IP地址」选项:如果设置为内网IP或
127.0.0.1,请改为你的静态公网IP,或者选择「*(所有未分配)」(这样IIS会监听所有可用IP) - 确认绑定的端口和你端口转发的端口一致(比如默认80/443)
2. 验证端口转发规则的有效性
端口转发配置错误是公网访问失败的常见原因:
- 登录路由器管理后台,检查端口转发规则:确保外部端口(比如80)指向服务器的内网IP和IIS监听的端口(要和站点绑定的端口完全匹配)
- 在外部网络的机器上,用
telnet 你的公网IP 端口命令测试连通性,如果无法连接,说明端口转发或防火墙存在问题 - 注意:如果你的ISP屏蔽了80/443端口,可能需要改用其他端口(比如8080),同时同步更新IIS绑定和端口转发规则
3. 检查Windows防火墙及其他防火墙设置
本地测试时内网请求可能被防火墙放行,但公网请求被拦截:
- 打开控制面板→Windows防火墙→高级设置
- 进入「入站规则」,找到「World Wide Web Services (HTTP Traffic-In)」规则,右键选择「属性」
- 在「高级」标签页,确保「配置文件」勾选了「公网」(或者所有网络)
- 如果没有现成的规则,新建一个入站规则:允许特定端口(比如80)的TCP连接,应用到公网配置文件
4. 确认文件权限与路径正确性
虽然本地正常,但公网访问时可能存在权限或路径问题:
- 检查
demo_get.txt文件是否和HTML页面在IIS站点的根目录下 - 右键文件→「属性→安全」,确保
IIS_IUSRS用户拥有读取权限(如果没有,添加该用户并赋予读取权限) - 可以直接在浏览器访问
http://你的公网IP/demo_get.txt,看是否能正常加载文件——如果不行,说明文件路径或权限有问题
5. 查看浏览器控制台的错误信息
公网访问时,打开浏览器开发者工具(F12),切换到「控制台」标签,查看具体错误提示:
- 如果是
404 Not Found:说明请求的文件路径不正确,检查相对路径或站点根目录配置 - 如果是
net::ERR_CONNECTION_TIMED_OUT:说明网络层面无法连接,回到端口转发和防火墙排查 - 如果是CORS相关错误:虽然同域名下不会出现,但如果端口转发的端口和IIS监听端口不一致,可能触发跨域,需要确保端口一致
按照以上步骤逐一排查,应该能解决XHR请求无响应的问题。
内容的提问来源于stack exchange,提问作者Mirza
相关产品推荐
相关产品推荐

