在我的 express 中为 node.js 设置了 cors 但仍然给出关于 cors 的相同错误
Posted
技术标签:
【中文标题】在我的 express 中为 node.js 设置了 cors 但仍然给出关于 cors 的相同错误【英文标题】:Set cors in my express for node.js already but still give the same error about 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 解决方案后,我不再收到该错误,但我看到的是
知道这是什么错误吗?
【问题讨论】:
【参考方案1】:是的,你做错了什么。使用路线后,您使用了 cors。
如果您将app.use(cors())
移动到app.use('/api', routes)
之前,它将正常工作。
【讨论】:
我根据您的解决方案进行了更新,它有效,但现在我遇到另一个错误,但没有说明它是什么。 除非您描述错误,否则我该如何帮助您?顺便说一句,如果您的问题得到了回答,请接受这个作为正确答案。 @OngKongTat 你把症状放在这里。尝试通过在每个步骤中放置 console.log() 来诊断问题,并查看问题可能出在哪里 - 前端、登录路径、中间件等。如果您无法解决问题,则将其作为新问题发布。顺便说一句,您没有发布登录路由代码。以上是关于在我的 express 中为 node.js 设置了 cors 但仍然给出关于 cors 的相同错误的主要内容,如果未能解决你的问题,请参考以下文章
在 express.js 中为 node.js 使用 jsonp
无法在我的 Node.js Express.js 应用程序中设置路由
如何在我的简单 Express 应用中使用 Node.js 集群?