Node.js 否';访问控制允许原点';请求的资源上存在标头。节点快速提取
我知道很多人都经历过类似的问题,但对他们有效的修复对我没有任何帮助。无论我做什么,我都会得到:Node.js 否';访问控制允许原点';请求的资源上存在标头。节点快速提取,node.js,reactjs,express,cors,fetch,Node.js,Reactjs,Express,Cors,Fetch,我知道很多人都经历过类似的问题,但对他们有效的修复对我没有任何帮助。无论我做什么,我都会得到: Access to fetch at 'http://localhost:5000/api/places/comments/test' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the request
Access to fetch at 'http://localhost:5000/api/places/comments/test' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
我正在与express一起使用node,这是我的app.js文件(与CORS相关的部分):
然后是路由文件(与不工作的路由相关)
最后是处理程序:
const addCommentHandler = async () => {
try {
const response = await fetch(
`${process.env.REACT_APP_BACKEND_URL}/api/places/comments/test`,
{
method: "POST",
body: { comment: formState.inputs.comment.value },
headers: {
Authorization: `Bearer ${auth.token}`,
"Content-Type": "application/json",
},
}
);
const responseData = await response.json();
console.log(responseData);
} catch (e) {}
};
我知道尸体已经寄出了,我也在邮递员那个里试过,效果不错
我做错了什么?您正在做的是
res.setHeader()
而不是req.setHeader()
当您尝试使用npm cors包启用服务器cors时,会发生什么情况?@sideshowbarker相同的结果,没有任何更改。请检查这一点。这可能是因为某些浏览器扩展将res更改为req,这没有帮助。您应该将其移到第一个中间件,将在1分钟内编辑我的答案
placesRouter.post("/comments/test", requireLogin, addComment);
const addCommentHandler = async () => {
try {
const response = await fetch(
`${process.env.REACT_APP_BACKEND_URL}/api/places/comments/test`,
{
method: "POST",
body: { comment: formState.inputs.comment.value },
headers: {
Authorization: `Bearer ${auth.token}`,
"Content-Type": "application/json",
},
}
);
const responseData = await response.json();
console.log(responseData);
} catch (e) {}
};
const app = express();
app.use((req, res, next) => {
req.setHeader("Access-Control-Allow-Origin", "*");
req.setHeader(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Authorization"
);
req.setHeader(
"Access-Control-Allow-Methods",
"GET, POST, PATCH, DELETE, PUT"
);
next();
});
app.use(bodyParser.json());
app.use("/api/places", placesRouter);