有一个node.js服务如下
'use strict';
var http=require('http');
var server = http.createServer(function (req,res) {
res.end("hello")
});
server.listen(8082);
console.log('Server is running at http://127.0.0.1:8082/');
在前端页面向该URL直接请求,浏览器会报出如下错误
Failed to load http://localhost:8082/: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
意思是让我们设置 ‘Access-Control-Allow-Origin’请求头才可以拿到结果,那么我们设置一下,添加一条语句
res.setHeader('Access-Control-Allow-Origin', '*');
完整如下:
'use strict';
var http=require('http');
var server = http.createServer(function (req,res) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.end("hello")
});
server.listen(8082);
console.log('Server is running at http://127.0.0.1:8082/');
在前端页面通过jquery再次进行请求
var url='http://localhost:8082'
$.ajax(url).done(function(res){
alert(res);
})
成功!
用于本地开发测试,实际应用中可使用白名单,把’*’替换成允许的域名,如
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');