NodeJS Angular UI和节点后端的CORS错误[重复]

o4tp2gmn  于 2022-12-29  发布在  Node.js
关注(0)|答案(2)|浏览(121)
    • 此问题在此处已有答案**:

(13个答案)
2天前关闭。
我刚接触node需要帮助。
我得到:第一个月
我的Angular 应用程序正在从http://localhost:4200启动
我正在向http://localhost:3000/api/auth/signin发出一个api请求(在postman上有效)
但我收到了CORS错误。
在我的节点server.js中,我配置了以下内容:

app.use(function (req, res, next) {
      res.setHeader("Access-Control-Allow-Origin", "*");
      res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
      res.setHeader('Access-Control-Allow-Methods', "GET, POST, PATCH, DELETE, OPTIONS");
      next();
    });

我可以使用postman发布数据,以便:localhost:3000/api/auth/signin

sqxo8psd

sqxo8psd1#

这是因为浏览器会发送一个叫做“预检”的请求,而 Postman 不会。所以,您的服务器必须首先响应这些预检请求,以便浏览器继续处理原始请求。
你的代码只会调用next(),然后进入下一个中间件,但是这个中间件之后会做什么呢?你应该立即发送OPTIONS请求。
或者,您可以使用cors包快速添加cors逻辑:

const cors = require('cors');

...

app.use(cors());
m528fe3b

m528fe3b2#

CORS代表跨源资源共享。它允许服务器指示浏览器应该允许加载资源的任何源(域、方案或端口)。
要在节点js中启用cors,请键入npm i cors OR yarn add cors

用途:-
常见J

const cors = require('cors')
const app = express()

cors ({origin: '*'}) // Enable CORS for all routes and allow any domain to make requests

ES6模块

import cors from 'cors'
const app = express()

cors ({origin: '*'}) // Enable CORS for all routes and allow any domain to make requests

cors中间件允许您指定允许的来源、方法和头,并且它会自动向响应添加必要的Access-Control-Allow-*头。
cors doc

相关问题