一般而言,如果后端域名和前端没有部署在同一台机器上,在web端进行网络请求就会出现跨域问题,导致无法调试。
一般的remote开发都会遇到这个问题,这里可以使用jsonp解决这个问题,但是却需要后台进行一些其他的操作,也不适合这套api同时共享给移动端,那么如何在web端进行远程调试,一般我们可以使用反向代理解决这个问题。当然,代理是会使得请求速度变慢的,大概十几-上百ms,所以在线上环境上,可以根据实际业务需求来考量是否使用反向代理这个方式。
然后,反向代理基本所有的server都可以做到,本篇文章就写一下常见的nginx、apache和nodejs的反向代理方法。
nginx:
在server的配置里加入类似于下文的
location /api/ {
proxy_pass http://suibo.5dktv.com/api/;
proxy_redirect default ;
}
apache:
找到配置文件httpd.conf
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName localhost:80
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass /api http://suibo.5dktv.com/api
ProxyPassReverse /api http://suibo.5dktv.com/api
</VirtualHost>
nodejs:
nodejs的话,如果是用express的话,需要安装express-http-proxy这个模块,用npm安装就好了
安装完成后,
var proxy = require('express-http-proxy'); var app = require('express')(); app.use('/proxy', proxy('www.google.com', { forwardPath: function(req, res) { return require('url').parse(req.url).path; } }));
类似于这样既可。
三种方法都是可以的,具体用哪种就看对哪种服务器熟悉了。。