跨域的定义:域名,端口,协议,只要有一个不同,就算跨域
1,后端服务有一个自己的ip和端口号,前端web页应用有一个自己的ip和端口号,那它们的ip能否通过nginx来映射在同一个域名上?先撇去端口号不谈,它们的ip虽然不同,但是都映射到同一个域名,所以不会有跨域问题?
2,现在来看端口号,就算上面第1点它们的域名都相同了,后端服务是一个独立的进程,前端web页面肯定也是属于一个独立的web应用,它们在操作系统下肯定有不同的端口。那岂不是,只要web页面要调后端服务的接口,就一定会产生跨域?因为它们的端口号不一样。
3,如果一个服务部署在多台机器上,水平拓展。假设这些服务映射的都是同一个域名,但各个服务的端口号也不能保证都相同吧。那前端去调接口,跨域问题不管怎么样都会出现啊?
4,会不会是这样的,就是把服务和前端应用都通过nginx绑定在同一个域名同一个端口下,那它们自己本身的端口号就不用管了
5,两个不同的二级域名能不能认为是同一个域名?
被这个跨域搞得有点晕,感觉可能是哪里概念混淆了,但又不知道哪里混淆了。。。
前后端走不同端口是不假,可是服务器也可以转发啊,比如可以用nginx把所有带.php的请求转发到9000端口,直接交给php-fpm自己去处理,这个用服务器配置来做就可以了,并不需要用户端手动去指定发送端口,并且我觉得把后台细节暴露给前端是不太舒服的。
还有一种做法,是前台自己负责一个中台,比如可以用php或者是node,把后台的细节封装起来,然后向前台提供服务器渲染,或者充当Ajax代理。这样后端跟后端之间通信就不用搞啥跨域问题了,而且如果是用阿里云这种,可以考虑把通信地址全改内网ip,后端直接藏到内网里就好,前端也可以随便改下返回的数据,自由度相对更高。