# 前端项目线上如何做跨域

前端页面被跨域限制了,说明不同源。 这个时候可以找一台跟后台接口同源的服务器用 nginx 来做接口转发。

以一个 vue 项目为例,在开发过程中,开发者可以主动去配合 dev 的 proxyTable, 本质上是本地起了一个 node 服务(express)来做转发到 localhost, 因为跨域是会存在于浏览器。 而发布到线上去之后,很可能由于 dev 环境下对每一个接口请求都携带了 /api 前缀,这对我们很友好。

nginx 配置:

    # ...
    location /api {
    	# 配置一
    	proxy_pass http://abc.hahah.com/;
    	# 配置二
    	proxy_pass http://abc.hahah.com;
    	# 配置三
    	proxy_pass http://100.200.30.20;
    }
    # ...

其中配置二和配置三,本质上是一样的(使用 ip 和域名)ip 后面有没有 / 是由区别的,有 / 表示转发请求之后,/api 后面的内容才会被转发,相当于 url 是被截断的,正好我们需要这种形式,因为 /api 是我们添加的虚拟的 url 部分。