当使用Ajax请求时,如果目标服务器没有设置正确的CORS响应头,就会出现“被CORS策略阻止:没有'Access-Control-Allow-Origin'”错误。解决方法如下:
const express = require('express');
const request = require('request');
const app = express();
app.get('/api/data', (req, res) => {
const url = 'http://目标服务器的URL'; // 目标服务器的URL
req.pipe(request(url)).pipe(res);
});
app.listen(3000, () => {
console.log('代理服务器已启动,监听端口3000');
});
在前端代码中,将Ajax请求的URL改为代理服务器的URL,如http://localhost:3000/api/data
。
const express = require('express');
const app = express();
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', 'http://你的域名'); // 允许指定的域名访问,可以使用通配符*允许所有域名访问
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); // 允许的请求方法
res.header('Access-Control-Allow-Headers', 'Content-Type'); // 允许的请求头
next();
});
// 处理请求的路由和逻辑代码...
app.listen(3000, () => {
console.log('服务器已启动,监听端口3000');
});
需要将http://你的域名
替换为你允许访问的域名,也可以使用通配符*允许所有域名访问。
这两种方法都可以解决CORS策略阻止的问题,选择哪种方法取决于你的实际情况。