使用Cloudflare Worker的Fetch API访问IIS文件遇403 Forbidden错误
解决Cloudflare Worker Fetch API访问IIS服务器403 Forbidden问题
针对你遇到的问题,以下是几个排查和解决方向:
添加Cloudflare IP段到IIS允许列表
Cloudflare Worker的请求来自Cloudflare的全球IP池,你的IIS可能默认阻止了这些陌生IP。需要把Cloudflare的所有IP段(包括IPv4和IPv6)添加到IIS的IP安全允许规则中:- 打开IIS管理器,选择目标网站,点击右侧的「IP地址和域名限制」
- 点击「添加允许条目」,将Cloudflare官方公布的IP段逐一添加
- 确保允许规则优先级高于拒绝规则,保存后重新测试请求
为Fetch请求添加合法User-Agent头
部分IIS服务器会拦截无User-Agent或异常User-Agent的请求,修改Worker代码,手动添加常见浏览器的User-Agent:await fetch('http://54.235.2.69/a.pdf', { cf: { cacheEverything: true }, headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } })补充Host请求头
直接访问时浏览器会自动携带Host头,而Fetch默认可能不发送,IIS可能需要Host头匹配站点配置。添加Host头到请求中:await fetch('http://54.235.2.69/a.pdf', { cf: { cacheEverything: true }, headers: { 'Host': '54.235.2.69' } })检查IIS动态IP限制设置
如果Worker请求频率较高,可能触发了IIS的动态IP限制模块导致临时403:- 打开IIS管理器,选择目标网站,点击「动态IP限制」
- 调整请求阈值或暂时禁用该功能测试
- 查看IIS日志确认是否有IP拦截记录
再次验证文件权限
虽然你已检查过网站文件夹的IUSR权限,可再确认a.pdf文件本身的NTFS权限是否允许IIS进程(如IUSR、IIS_IUSRS)读取访问
内容的提问来源于stack exchange,提问作者Flix Hub
相关产品推荐
相关产品推荐

