基于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~