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);