Javascript FetchAPI。我从自己的express服务器得到一个空字符串
我已经在4000端口上设置了一个express.js服务器。获取请求并发送纯文本字符串Javascript FetchAPI。我从自己的express服务器得到一个空字符串,javascript,node.js,express,fetch,Javascript,Node.js,Express,Fetch,我已经在4000端口上设置了一个express.js服务器。获取请求并发送纯文本字符串 let express = require("express"); const app = express(); const port = 4000; app.listen(port, () => { console.log(`SERVER is running on port ${port}`)}); app.use(express.text()); app.get("/", (req,res)
let express = require("express");
const app = express();
const port = 4000;
app.listen(port, () => { console.log(`SERVER is running on port ${port}`)});
app.use(express.text());
app.get("/", (req,res) =>{
console.log("Get from /");
res.send("Hello world");
});
我正在尝试使用fetchApi获取字符串“helloworld”
window.onload = ()=>{
fetch("http://127.0.0.1:4000/", {
method: "GET",
mode: "no-cors"
}).then(res=>{
return res.text();
}).then( text => {
console.log(text);
});
};
我在控制台中得到一个空字符串,但当我打开网络发送请求时,我会在网络响应中看到消息 你说:
这意味着“我不会做任何需要服务器授予CORS权限的事情,因此如果我没有该权限,请不要在控制台中填充错误”
由于跨源读取响应需要CORS的权限,并且您说不需要权限,因此当您尝试读取响应时,会返回一个空字符串
如果要读取响应,则需要CORS,因此请退出
模式
配置。如果使用的是最新版本的Express,请尝试此代码,而不需要Express.text():
然后:
window.onload = ()=>{ fetch("http://127.0.0.1:4000/", { method: "GET"}).then(res=>{ return res }).then( text => { console.log(text); }); };
这有助于我``app.use(函数(req,res,next){res.header(“访问控制允许来源”);res.header(“访问控制允许来源”,“来源,X请求的内容类型,接受”);next();})“``@Alexander-使用NPM的
cors
模块,而不是滚动你自己的模块。不要允许你不需要的随机请求头。Access Control allow headers
不应该出现在请求上。Origin
不需要权限。X-request-With
是一个丑陋的黑客行为,请求应该使用Accept
相反,内容类型
不应存在于GET请求中。
const express = require("express");
const app = express();
const port = 4000;
app.listen(port, () => { console.log(`SERVER is running on port ${port}`)});
app.get("/", (req,res) =>{ console.log("Get from /"); res.send("Hello world") });
window.onload = ()=>{ fetch("http://127.0.0.1:4000/", { method: "GET"}).then(res=>{ return res }).then( text => { console.log(text); }); };