【问题标题】:Set cors in my express for node.js already but still give the same error about cors在我的 express 中为 node.js 设置了 cors 但仍然给出关于 cors 的相同错误
【发布时间】:2017-11-16 00:59:29
【问题描述】:

我已经尝试在我的 express 应用中设置 cors,但它仍然给出了

XMLHttpRequest cannot load http://localhost:3000/api/login. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.

我正在尝试为我的登录 api 做一个 ajax 请求以进行试验。如果输入正确,则输出“Login Success”,否则输出“Invalid Login ID or Password”。
我的代码

var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var routes = require('./routes');
var cors = require('cors');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended:true}));
app.use('/api',routes);
app.use(cors());

/*app.post('/api', function (req, res) {
var data = req.body;
console.log(data);
res.sendStatus(200);
});*/

app.listen(3000, function () {
console.log('Example app listening on port 3000!')
});

这是我的 ajax 请求服务器端代码。

function login(){

var username = $('#userID').val();
var password = $('#Password').val();
var postData = { "userID": username, "Password": password };
var postJSON = JSON.stringify(postData);

$.ajax({
    url: "http://localhost:3000/api/login", // server url
    type: "POST", //POST or GET
    contentType: "application/json",
    data: postJSON, // data to send in ajax format or querystring format
    dataType : "json",
    success: function(response) {
        alert('success');
        console.log(response);
        $("#result").val(response);
        window.location.replace("http://localhost/index.html");
    },
    error: function(response) {
        alert('error');
    }
    });
  }

至于我的html代码我只有

<input class="button" type="submit" id="submit" value="Log In" 
onclick="login()"/>
      <div id="result"></div>

这是我在 chrome F12 中观察网络选项卡时得到的响应。

Request URL:http://localhost/
Referrer Policy:no-referrer-when-downgrade
Request Headers
Provisional headers are shown
Content-Type:application/x-www-form-urlencoded
Origin:http://localhost
Referer:http://localhost/
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Form Data
view source
view URL encoded
userID:SDD
Password:KKK

我是否在 cors 中设置错误?我已经在 npm 中安装并按照 npm cors 本身的说明进行操作,但仍然出现此错误,说我没有启用 cors。任何帮助表示赞赏!谢谢

更新 遵循 Abhyudit Jain 解决方案后,我不再收到该错误,但我看到的是

知道这是什么错误吗?

【问题讨论】:

    标签: node.js ajax express cors


    【解决方案1】:

    是的,你做错了什么。使用路线后,您使用了 cors。

    如果您将app.use(cors()) 移动到app.use('/api', routes) 之前,它将正常工作。

    【讨论】:

    • 我根据您的解决方案进行了更新,它有效,但现在我遇到另一个错误,但没有说明它是什么。
    • 除非您描述错误,否则我该如何帮助您?顺便说一句,如果您的问题得到了回答,请接受这个作为正确答案。
    • @OngKongTat 你把症状放在这里。尝试通过在每个步骤中放置 console.log() 来诊断问题,并查看问题可能出在哪里 - 前端、登录路径、中间件等。如果您无法解决问题,则将其作为新问题发布。顺便说一句,您没有发布登录路由代码。
    猜你喜欢
    • 2020-01-28
    • 2021-09-21
    • 2021-03-01
    • 2019-08-11
    • 2016-12-25
    • 2017-08-04
    • 1970-01-01
    • 2020-01-01
    • 2020-06-22
    相关资源
    最近更新 更多