在 IIS 中设置跨域(CORS)设置,需要通过配置 web.config 文件或使用 IIS 管理器添加 HTTP 响应头来实现。以下是两种常用方法,适用于允许局域网内(如你的 192.168.0.69 服务器)的跨域请求:

方法一:通过 web.config 文件配置(推荐)

直接在网站或虚拟目录的根目录下创建 / 修改 web.config 文件,添加跨域相关配置。这种方式更灵活,且配置会自动生效。

1. 找到配置文件位置

  • 若要允许整个网站的跨域请求:在网站的物理根目录(如 C:\inetpub\wwwroot)中找到 web.config(若没有则新建)。
  • 若仅允许虚拟目录 amovie 的跨域请求:在虚拟目录对应的物理文件夹(如 C:\videos)中创建 / 修改 web.config

2. 添加跨域配置

将以下代码添加到 web.config 中(若已有 <system.webServer> 节点,直接合并内容):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <!-- 跨域核心配置 -->
        <httpProtocol>
            <customHeaders>
                <!-- 允许的来源(必填):* 表示允许所有域名,局域网内建议指定具体前端域名 -->
                <!-- 例如:前端页面在 http://192.168.0.100,则改为 value="http://192.168.0.100" -->
                <add name="Access-Control-Allow-Origin" value="*" />
                
                <!-- 允许的请求方法(根据需求添加,至少包含 GET) -->
                <add name="Access-Control-Allow-Methods" value="GET, HEAD, OPTIONS" />
                
                <!-- 允许的请求头(需包含前端请求中使用的头,如 Range、Origin 等) -->
                <add name="Access-Control-Allow-Headers" value="Range, Origin, X-Requested-With, Content-Type" />
                
                <!-- 允许前端读取的响应头(如视频分片需要的 Content-Range) -->
                <add name="Access-Control-Expose-Headers" value="Content-Range, Accept-Ranges" />
            </customHeaders>
        </httpProtocol>

        <!-- 允许 IIS 处理 OPTIONS 请求(跨域预检请求会用到) -->
        <handlers>
            <remove name="OPTIONSVerbHandler" />
            <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" resourceType="Unspecified" requireAccess="None" />
        </handlers>
    </system.webServer>
</configuration>

3. 生效配置

保存文件后,IIS 会自动加载新配置,无需重启(若不生效,可在命令行执行 iisreset 重启 IIS)。

方法二:通过 IIS 管理器手动添加响应头

适合不熟悉 web.config 的用户,通过图形化界面配置:

1. 打开 IIS 管理器

  • 按下 Win + R,输入 inetmgr 打开 IIS 管理器。
  • 在左侧导航栏中,定位到你的网站(或虚拟目录 amovie)。

2. 配置 HTTP 响应头

  • 双击右侧 “功能视图” 中的 HTTP 响应头 图标。

  • 点击右侧 “操作” 栏中的 添加,依次添加以下头(对应 web.config 中的配置):

    名称 说明
    Access-Control-Allow-Origin *(或具体前端域名,如 http://192.168.0.100 允许跨域的来源
    Access-Control-Allow-Methods GET, HEAD, OPTIONS 允许的 HTTP 方法
    Access-Control-Allow-Headers Range, Origin, X-Requested-With, Content-Type 允许的请求头
    Access-Control-Expose-Headers Content-Range, Accept-Ranges 允许前端读取的响应头(视频播放必需)
    Accept-Ranges bytes 支持视频分片加载(配合 Range 请求)

3. 允许 OPTIONS 方法(关键)

  • 返回网站主页,双击 处理程序映射
  • 在右侧 “操作” 栏中点击 添加模块映射
    • 请求路径:*
    • 请求限制:动词选择 OPTIONS
    • 模块:选择 ProtocolSupportModule
    • 名称:OPTIONSVerbHandler
  • 点击 “确定” 保存。

验证跨域配置是否生效

  1. 在前端页面中触发跨域请求(如你的 checkFlvUrlExists 函数)。
  2. 按 F12 打开浏览器开发者工具,切换到 Network 标签。
  3. 找到请求 192.168.0.69/amovie/girl.mp4 的记录,查看 Response Headers
    • 若包含 Access-Control-Allow-Origin 且值正确,说明跨域配置生效。
    • 若请求状态码为 200 或 206,且无跨域错误提示,则配置成功。

注意事项

  • 生产环境中,Access-Control-Allow-Origin 不建议用 *(允许所有来源),应指定具体的前端域名(如 http://192.168.0.100:8080),更安全。
  • 若配置后仍有跨域错误,检查前端页面的协议(HTTP/HTTPS)是否与视频源一致,混合协议(如前端 HTTPS 访问后端 HTTP)会被浏览器拦截。
  • 虚拟目录的跨域配置需确保继承网站的配置,或在虚拟目录自身的 web.config 中单独设置。

通过以上配置,你的 Dplayer 应该能正常访问局域网内 IIS 服务器的视频资源了。