Node.js可以通过设置header头或使用第三方模块实现跨域访问(CORS)。
一、设置header头
在服务端设置Access-Control-Allow-Origin头即可实现跨域访问:
var http = require('http');
var server = http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain", "Access-Control-Allow-Origin": "*"});
response.write("Hello World");
response.end();
});
server.listen(8888);
console.log('Server running at http://localhost:8888/');
上面的代码通过setHeader方法设置Access-Control-Allow-Origin头为"*",表示允许所有来源的请求访问本服务器。
二、使用第三方模块
- cors模块
cors模块是一个第三方模块,可以方便地实现跨域访问。
a) 安装cors模块
在命令行中执行以下命令安装cors模块:
npm install cors --save
b) 使用cors模块
var express = require('express');
var cors = require('cors');
var app = express();
// 允许所有的源跨域访问
app.use(cors());
app.get('/', function(req, res) {
res.send('Hello World');
});
app.listen(8888);
console.log('Server running at http://localhost:8888/');
上面的代码中,通过使用app.use(cors())来添加cors中间件,表示允许所有的源跨域访问服务端。
- http-proxy-middleware模块
http-proxy-middleware是一个第三方模块,可以将请求代理到其他服务器,同时也支持跨域访问。
a) 安装http-proxy-middleware模块
在命令行中执行以下命令安装http-proxy-middleware模块:
npm install http-proxy-middleware --save
b) 使用http-proxy-middleware模块实现跨域
var express = require('express');
var proxyMiddleware = require('http-proxy-middleware');
var app = express();
var options = {
target: 'http://localhost:8080', // 目标服务器地址
changeOrigin: true, // 跨域访问,需要修改Origin
};
app.use('/', proxyMiddleware(options));
app.listen(8888);
console.log('Server running at http://localhost:8888/');
上面的代码中,通过使用http-proxy-middleware模块来代理请求,实现跨域访问,其中options.target表示要代理到的目标服务器地址,options.changeOrigin为true表示需要修改Origin以实现跨域访问。
以上两种方法都可以实现跨域访问。需要注意的是,如果使用第三方模块,一定要记得安装和引入相应的模块。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nodejs如何解决跨域(CORS) - Python技术站