在制作MMORPG项目的过程中,我正在学习服务器-客户端通信。
*更新:服务器端代码已编辑。
这是服务器端代码。
router.post('/login', async (request, response, next) => {
passport.authenticate('login', async (error, user) => {
try {
if (error) {
return next(error);
}
if (!user) {
return next(new Error('email and password are required'));
}
request.logIn(user, { session: false }, (err) => {
if (err) {.....
这是客户端代码
function postData(url, data = {}) {
return fetch(url, {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'include',
headers: {
'Content-Type': 'application/json',
},
redirect: 'follow',
body: JSON.stringify(data),
}).then((response) => response.json());
}
login() {
const loginValue = this.loginInpout.value;
const passwordValue = this.passwordInput.value;
postData('http://localhost:4000/login', { email: loginValue, password: passwordValue })
.then((response) => {
if (response.status === 200) {
this.startScene('Game');
} else {
console.log(response.message);
window.alert('invald username or password');
}
}).catch((error) => {
console.log(error.message);
window.alert('invald username or password');
});
}
当调用login()函数时,finch()函数将此消息抛出到浏览器控制台。(http://localhost:4000/login)是服务器端,(http://localhost:8000)是客户端。
Access to fetch at 'http://localhost:4000/login' from origin 'http://localhost:8000'
has been blocked by CORS policy: Response to preflight request doesn't pass access
control check: The value of the 'Access-Control-Allow-Credentials' header in the
response is '' which must be 'true' when the request's credentials mode is 'include'.
LoginScene.js:48 POST http://localhost:4000/login net::ERR_FAILED
Failed to fetch <<-- fetch error message on browser console
我尝试了许多不同的方法来修复它,但没有得到好的结果。
请尝试以下代码:
import express from "express";
import http from "http";
const app = express();
const server = http.createServer(app);
const sio = require("socket.io")(server, {
handlePreflightRequest: (req, res) => {
const headers = {
"Access-Control-Allow-Headers": "Content-Type, Authorization",
"Access-Control-Allow-Origin": req.headers.origin,
"Access-Control-Allow-Credentials": true
};
res.writeHead(200, headers);
res.end();
}
});
sio.on("connection", () => {
console.log("Connected!");
});
我正在尝试向RESTAPI发送评论。rest API已经为我的应用程序地址设置了CORS。。 后端 但我得到了 加载失败http://localhost:8999/api/comment: 对飞行前请求的响应未通过访问控制检查:响应中“访问控制允许凭据”标头的值为“”,当请求的凭据模式为“包括”时,该值必须为“真”。起源'http://localhost:8000因此,不允许访问。XMLHttpR
我正在从主机(http://abc.com.au)向主机http://localhost:8081上运行的Spring Cloud API网关发送ajax请求。 jquery AJAX请求代码。 SimplifiedAdoptionBulkUpload.jsp spring cloud gateway cors配置。 我在chrome控制台中遇到以下错误。 SimplifiedAdoptionBu
一、 am在angular 6和asp.net内核上使用信号器功能。但对飞行前请求继续获取此错误响应未通过访问控制检查:响应中“访问控制允许凭据”标头的值为“”,当请求的凭据模式为“包括”时,该值必须为“真”。 做了一些研究,发现这是服务器端的CORS问题。所以修改了服务器代码。 startup.cs 角度应用程序 参考资料 访问控制允许原点-角度5 响应中的访问-控制-允许-凭据标题为"这必须是
我有一个react应用程序在localhost:3000上运行,localhost:8000上有一个nodeJS express服务器,我需要向jsreport API发送POST请求,但当我尝试发送请求时,出现以下错误: 访问位于“”的XMLHttpRequesthttp://localhost:5488/api/report“起源”http://localhost:3000'已被CORS策略阻
我使用进行用户身份验证,只允许登录用户访问Spring(引导)。此时,我正在创建一个实时消息功能,用户可以使用和从客户机()向Spring服务器(localhost:8081)发送消息。 当试图创建Stomp-client并启动连接时,我收到以下控制台错误: 在研究了这个问题之后,似乎不可能同时设置origins=*和credentials=true选项。当我已经将WebSocketConfig中