ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Unity Webgl版本客户端处理跨域不能访问的问题

2022-01-11 16:58:31  阅读:270  来源: 互联网

标签:Control 跨域 header Webgl 代理服务器 nginx Unity 服务端


以前没做过Unity web版本,第一次做,在编辑器下调试得好好的,前后端登录对接都没问题,理所当然的以为发布出来就万事大吉。谁知道发布出来才是噩梦的开始。好家伙,直接登录不了。看输出日志居然是unknown error,这下可把我整懵了。后来通过查看网页版的运行日志才知道是浏览器跨域不能访问的问题。(按F12可以直接查看网页的运行日志,我当时也不懂,折腾了我好一阵)。

跨域按我粗浅的理解就是客户端和服务端协议,域名,端口不一致导致的。想详细了解的可以查看下面的链接。

跨域问题产生的原因

跨域问题最好的办法是在服务端解决,但如果是基于某些特殊原因,我们没办法在服务端解决,是不是就意味着这个问题不能解决了。当然不是。还记得上面我们说的产生跨域的原因吗,跨域产生是因为协议,域名,端口不一致产生的,假如我们可以让协议,域名,端口一致,那跨域的问题不就迎刃而解了吗?有人说,你这不是废话吗,协议,域名,端口都一样的话,我还需要来看你写的这篇垃圾。稍安勿操,试想一下,假如我们在本地部署一个代理服务器,通过代理服务器去访问我们真正需要访问的服务端。我们与真正服务端之间的通讯都经过这个代理服务器。因为代理服务器是在我们本地部署的,自然不存在跨域的问题。至于代理服务器和服务端直接的跨域问题,我们没办法直接去修改真正的服务端,但是我们可以修改自己部署的代理服务器的配置啊,我们给它加上允许跨域访问的协议,这样问题不就解决了吗。当然,理论再好,还得看实践。

首先下载一个nginx服务器,别问为啥选它,问就是刚好搜到它。详细的下载及部署就不多介绍了,下面的链接已经介绍得很详细了。

nginx的下载及安装部署

部署完成后最关键的来了,在你解压好的nginx路径下打开conf文件夹,找到下面的nginx.conf配置文件,按照下面的设置更改配置,修改完之后在cmd控制台执 nginx -s reload方法即可

   location / {
        #实际需要访问的服务端,这里需要替换成你想要访问的服务端
            proxy_set_header Host www.ilab-x.com;
            proxy_pass http://www.ilab-x.com/;
            
            #root   html;
            #index  index.html index.htm;
            #allow all;
            
            charset utf-8;   #显示中文
            #设置代理服务器允许所有的跨域访问
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
            
            #加上这一句防止post方法还是出现跨域的问题,刚开始就是因为少了这个,折腾了好久
            if ($request_method = 'OPTIONS') {
                 return 204;
            }

        }

更详细的参数解释可以查看下面的链接。

 nginx配置代理服务器

标签:Control,跨域,header,Webgl,代理服务器,nginx,Unity,服务端
来源: https://blog.csdn.net/qq_20991149/article/details/122433336

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有