出现这种情况,一般是因为服务器没有设置Access-Control-Allow-Origin头。我们需要在服务器端进行相应的设置。以下是一个使用Node.js和Express框架的示例代码,通过设置response header中的Access-Control-Allow-Origin来允许跨域请求:
const express = require('express');
const app = express();
app.use((req, res, next) => {
// 允许所有来源的跨域请求
res.header("Access-Control-Allow-Origin", "*");
// 允许请求头中包含的各种字段
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
if (req.method === 'OPTIONS') {
// 请求方法为OPTIONS时(例如预检请求),允许请求的HTTP方法
res.header('Access-Control-Allow-Methods', 'PUT, POST, PATCH, DELETE, GET');
return res.status(200).json({});
}
next();
});
// 在合适的地方设置路由
app.post('/api/some_route', (req, res, next) => {
// do something
res.send('response');
});
app.listen(3000, () => {
console.log('Server started on port 3000');
});