当我们的前端网站部署到nginx服务器上后,用户通过浏览器访问这个前端网站。
关于页面数据的请求,实际上是用户浏览器发起的。浏览器不直接向后端要数据,而是由用户浏览器发给nginx,因为nginx配置了代理,所以又将该请求转发到了后端。
这个过程中不存在跨域问题,因为源地址(前端页面所在服务器的地址referer)和目标地址(浏览器要数据的地址)同源(协议、域名、端口号均一致)。
现在,nginx上的前端页面要访问用户本地的服务该怎么办呢?
如果请求依然是通过nginx代理,那么浏览器向nginx发起请求后,nginx应该转发到哪呢,是127.0.0.1吗?答案是否定的,因为nginx转发到127.0.0.1并不是用户本地服务地址,而是nginx所在服务器的IP地址。那该怎么调用呢?
答案是我们不用通过nginx去代理请求,而是直接通过浏览器向本地服务发起请求。
以上,直接调用本地服务显然出现了跨域问题,但至少我们已经请求到了本地服务。
接下来,只需要解决跨域问题。因为本地服务设置了允许源地址为127.0.0.1或者是https的网页跨域,因此我们将前端网页部署改为https的 网页即可。
至此,跨域问题解决。部署后,前端成功调用了本地服务。