Unity(WebGL)跨域请求处理(避坑专用)

基于nginx解决Unity发布WebGL跨域请求问题

跨域说明
项目需要在WebGL平台做资源热更。已在Unity编辑器下验证所有功能正常,发布WebGL后下载资源提示跨域问题。由于webgl包是部署在本地nginx上,热更资源部署本地HFS中,两者端口不一样,所以发布后测试下载资源出现这个问题。
跨域原因
1).域名不同
2).端口不同
3).子域名不同
跨域环境
unity开发过程中,请求后台接口或者下载服务器资源我们在编辑器下一切接口都请求正常,但是发布到WebGL部署后测试会经常发现有跨域的问题。跨域解决办法很多,这里主要将基于nginx部署完修改配置解决跨域问题。
跨域解决
1.Unity修改请求地址IP,设值为虚拟字段,可随便定义;
这里我定义值:api;如下:

#if UNITY_EDITOR
        hostServerIP = "http://127.0.0.1/";
#else
        hostServerIP = "api";
#endif

2.修改nginx.conf配置,该文件在nginx安装包目录下;
解决原理:重写请求IP地址,可在nginx.conf内直接添加如下代码块:

location /yooasset_web_test/api {
			proxy_set_header  Host  $host;
			proxy_pass http://127.0.0.1/;	
			rewrite ^/yooasset_web_test/api/(.*)$ /$1 break;			
        }

代码说明:
yooasset_web_test:unity发布webgl包时新建文件夹名称
api:自定义的虚拟代码块
http://127.0.0.1/:跨域请求地址,可根据需要在后面追加端口
将以上内容按需要修改设置即可

亲测有效!!!网上找的很多文章都没有解决的问题就这样轻松解决了,nice~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值