Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;“被CORS政策阻止”;尝试使用expressJS重定向时_Javascript_Express - Fatal编程技术网

Javascript &引用;“被CORS政策阻止”;尝试使用expressJS重定向时

Javascript &引用;“被CORS政策阻止”;尝试使用expressJS重定向时,javascript,express,Javascript,Express,我在尝试使用ExpressJS重定向时遇到了一个问题,我创建了一个登录系统,该系统会收到一个post请求,如果用户存在,那么页面应该重定向,但是Cors会阻止它 请求如下: router.post('/login', async (req, res) => { try{ let usersData = await getFiles(__dirname + '/users.json'); let parsedUsers = JSON.parse

我在尝试使用ExpressJS重定向时遇到了一个问题,我创建了一个登录系统,该系统会收到一个post请求,如果用户存在,那么页面应该重定向,但是Cors会阻止它

请求如下:

router.post('/login', async (req, res) => {

    try{    
       let usersData = await  getFiles(__dirname + '/users.json');
       let parsedUsers = JSON.parse(usersData);
       let userChecker;
       for(let i = 0; i < parsedUsers.length; i++){
       if(parsedUsers[i].userName === req.body.userName){
           userChecker = 1;
           break;
       } 
       }

       if(!userChecker){
        console.log(`${req.body.userName} Not exist`);}

        else {
        console.log(`${req.body.userName} Approved`);
        res.redirect('/')
       }
        }
     catch (err) {
      if(err) throw err
    };
})
谁能告诉我cors有什么问题吗?

这是因为cors(跨源资源共享)在您的项目中还不允许。您可以为此安装软件包

npm install cors
那么这样做,

app.use(cors()) // It will enable all cors requests

就这样。你现在可以走了。这是处理cors的最简单方法。

为此,您需要从服务器发送一些标头,以便浏览器知道允许访问该域。 您可以试试这个
手动标题

app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
    res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PATCH, DELETE, OPTIONS');
    next();
});

// your code
router.post('/login', async (req, res) => {

});
//run this command for install the cors module
npm install cors // install the cors

// use it in your code
app.use(cors()) // will enable cors

// your code
router.post('/login', async (req, res) => {

});

Cors npm模块:

app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
    res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PATCH, DELETE, OPTIONS');
    next();
});

// your code
router.post('/login', async (req, res) => {

});
//run this command for install the cors module
npm install cors // install the cors

// use it in your code
app.use(cors()) // will enable cors

// your code
router.post('/login', async (req, res) => {

});


实际上,我的应用程序在主页上使用cors。也许我必须将其添加到用户路由器文件中?@SahiBalata我认为您的主页即索引文件应该足够了。这还不够,仍然阻止请求。我认为我遇到了问题。。。我应该添加“访问控制允许来源”。。。但是我不知道如何添加语法以及在哪里…@SahiBalata我认为这是cors应该做的。检查已安装cors的更多信息,并在索引页添加“``app.use(cors())```”。我应该把它放在路由器页面吗?“/login”帖子来自另一个名为users.js的文件,我使用的是express router。在我的主文件“index.js”中,我添加了“app.use(cors())”。我要问的是我是否应该将router.use(cors())添加到users.js文件中?