You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity WebGL构建时请求遭CORS拦截问题求助

解决Unity WebGL版本CORS请求拦截问题

核心逻辑说明

桌面版和禁用CORS的浏览器能正常运行,是因为桌面客户端不受浏览器同源策略限制,禁用CORS则直接绕过了浏览器的安全校验。浏览器的CORS机制本身是强制安全规则,但确实存在无需修改服务器的解决思路:


方案1:调整UnityWebRequest请求配置

如果游戏使用UnityWebRequest发起请求,可针对WebGL平台调整参数:

  • 若仅需触发请求、无需读取响应内容,可按报错提示设置请求模式为no-cors:
using UnityEngine.Networking;

IEnumerator SendLaunchRequest()
{
    UnityWebRequest request = UnityWebRequest.Get("https://myhost/launch");
    #if UNITY_WEBGL && !UNITY_EDITOR
    request.SetRequestHeader("Access-Control-Request-Method", "GET");
    request.useHttpContinue = false;
    // 启用no-cors模式,注意:此模式下无法读取响应内容
    request.SetRequestHeader("mode", "no-cors");
    #endif
    yield return request.SendWebRequest();
    
    if (request.result != UnityWebRequest.Result.Success)
    {
        Debug.Log(request.error);
    }
}
  • 若需要读取响应内容,此方案不适用,需采用下方代理方案。

方案2:本地反向代理(调试/预发布测试)

用本地代理工具(如Nginx、Caddy)将localhost请求转发到远程服务器,让浏览器判定请求为同源:

  1. 下载Nginx后,修改nginx.conf配置:
server {
    listen 8080;
    server_name localhost;

    location /launch {
        proxy_pass https://myhost/launch;
        proxy_set_header Host myhost;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
  1. 启动Nginx,将Unity中的请求地址改为http://localhost:8080/launch,此时浏览器不会触发CORS拦截。

方案3:Unity WebGL导出配置调整

在Unity编辑器中修改WebGL相关设置:

  • 打开Edit > Project Settings > Player > WebGL
  • 在Publishing Settings中勾选Enable Cross-Origin Resource Sharing (CORS)
  • 将Allow Downloads设置为All

补充提示

如果是正式发布WebGL版本,服务器端配置CORS是最标准、最稳定的方案(添加Access-Control-Allow-Origin响应头)。上述方案主要用于调试或临时场景。

内容的提问来源于stack exchange,提问作者draqula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:42:32