最近想把气象局的实时数据接入单位的系统里,服务器端跨域,不能直接获取数据,在git 上找了一个代理服务器,很好用,推荐给大家,项目名称叫 node-proxy-api-master
因为中间涉及到参数传递
话不多说,直接看代码
var express = require('express'); var request = require('superagent')
var app = express(); var HOST = 'http://data.cma.cn/'; //目标的域名 app.set('port', (process.env.PORT || 5000)); /** * CORS support. */
app.all('*', function (req, res, next) { if (!req.get('Origin')) return next(); // use "*" here to accept any origin res.set('Access-Control-Allow-Origin', '*'); res.set('Access-Control-Allow-Methods', 'GET'); res.set('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type'); // res.set('Access-Control-Allow-Max-Age', 3600); if ('OPTIONS' == req.method) return res.send(200); next(); }); //subject/27191431/ app.get('*', function (req, res) { //请求统一在这里响应 var sreq = request.get(HOST + req.originalUrl) res.header("Content-Type", "application/json; charset=utf-8") sreq.pipe(res); sreq.on('end', function (error, res) { console.log('end'); }); }) app.listen(app.get('port'), function() { console.log('Node app is running on port', app.get('port')); });
package.json
{ "name": "node-express-api", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "superman", "license": "ISC", "dependencies": { "express": "^4.15.2", "superagent": "^3.5.0" } }
最后的效果