This question already has answers here:
Why does my JavaScript code get a “No 'Access-Control-Allow-Origin' header is present on the requested resource” error when Postman does not?
(45个答案)
3个月前关闭。
我有以下问题:
我有一个在localhost:3001上运行的api和一个在localhost:3000上的react应用程序。我可以向邮递员提出请求,但是当我使用自己的网站时,出现以下错误:
从源'http://localhost:3001/login'在'http://localhost:3000'处对XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:邮件头上没有'Access-Control-Allow-Origin'标头要求的资源。
我做了一些研究,但没有一个起作用。
https://www.html5rocks.com/en/tutorials/cors/
根据网站,我需要xhr.withCredentials = true。但这也不起作用。
以下是我的应用程序中的一些代码
有人知道如何解决此问题,原因是什么?如果可能的话,还有一些示例代码。
(45个答案)
3个月前关闭。
我有以下问题:
我有一个在localhost:3001上运行的api和一个在localhost:3000上的react应用程序。我可以向邮递员提出请求,但是当我使用自己的网站时,出现以下错误:
从源'http://localhost:3001/login'在'http://localhost:3000'处对XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:邮件头上没有'Access-Control-Allow-Origin'标头要求的资源。
我做了一些研究,但没有一个起作用。
https://www.html5rocks.com/en/tutorials/cors/
根据网站,我需要xhr.withCredentials = true。但这也不起作用。
以下是我的应用程序中的一些代码
function postAjax(method, apiUrl, data, callback) {
let xhr = new XMLHttpRequest();
xhr.open(method, apiUrl, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.withCredentials = true;
xhr.addEventListener("load", function() {
if (xhr.status != 400 && xhr.status != 404) {
callback(JSON.parse(xhr.responseText));
}
});
xhr.send(JSON.stringify(data));
}
router.post('/login', function(req,rsp){
const {username, password} = req.body;
req.db.get('select * from users where name=?', username, function(_err, user) {
if(!user) {
rsp.status(203).json({error:'User does not exist'})
} else{
let bcryptPassword = user.bcryptPassword;
let level = user.level;
let auth = jwt.sign({username, level}, SECRET);
if(bcrypt.compareSync(password, bcryptPassword)){
rsp.header('auth', auth);
rsp.status(200).json({token: auth})
} else{
rsp.status(203).json({error: 'Wrong password'});
}
}
});
});
有人知道如何解决此问题,原因是什么?如果可能的话,还有一些示例代码。
最佳答案
您可以在服务器中使用cors模块。 https://www.npmjs.com/package/cors
npm i cors安装外部cors软件包
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())