白驹过隙,这篇文章距今已有一年以上的历史。技术发展日新月异,文中的观点或代码很可能过时或失效,请自行甄别:)

缘起

开发公司的一个项目时采用的是RESTFUL接口形式,token等权限验证信息是注入在http请求的header头部的.因为是在内网进行调试,接口的域名为a.com,为了方便在家的时候进行开发调试,将接口挂在了外网.因80端口被运营商限制,于是使用了另外的端口.而我在本地虚拟了一个b.com的域名,请求,直接显示跨域...

尝试一

在我的b.com域名下使用了一个php页面来进行301跳转,但是发现很是麻烦,需要提取出我实际需要的url再进行转发,该方案被放弃

尝试二

本地用nginx绑定了一个非80端口的a.com域名,然后nginx内做了反向代理到接口,结果发现忘记了域名相同端口不同也算跨域,该方案直接被打死= =

尝试三

受方案一和方案二的灵感,想到为何不直接使用nginx反向代理到接口服务器?使用我本地a.com中一个永远不会存在的url作为接口的跳板,然后nginx讲该url反向代理到接口服务器.ok,尝试,成功!

附上nginx配置信息:

server {
    listen 80;
    server_name a.com;
    root /wwwroot/test;
    autoindex off;
    index index.html index.htm index.php;

    # 将a.com/api的所有请求反向代理到b.com:1234
    location /api {
        proxy_pass b.com:1234;
    }

    location ~ /\.ht {
       deny  all;
    }
}