javascript - app.use(cors()) 是做什么的?

标签 javascript node.js express

我知道我们无法访问具有与我们不同的域的 API。然而,我看到很多人在express中安装cors模块来使用API​​,然后像这样使用它:

app.use(cors());

它实际上有什么作用?该函数如何在服务器上启用cors

最佳答案

摘要

正如您所说,它启用了CORS(跨源资源共享)。为了让其他来源(域)可以访问您的服务器。

它的真正作用

调用 use(cors()) 将使 express 服务器 响应预检请求。

预检请求基本上是在发送实际请求之前发送到服务器的OPTION请求,以便询问服务器接受哪个来源和哪些请求选项。

所以CORS基本上是服务器发送到浏览器的一组 header 。 调用 cors() 而不添加任何附加信息将设置以下默认值:

{
  "origin": "*",
  "methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
  "preflightContinue": false,
  "optionsSuccessStatus": 204
}

这些被翻译成这些标题:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET,HEAD,PUT,PATCH,POST,DELETE
Status Code: 204

这基本上是让任何通过浏览器向您的服务器请求资源的域都可以访问您的服务器。

您可以在此处检查所有快速 cors 配置:https://github.com/expressjs/cors

您还可以在此处阅读有关浏览器 cors 的更多信息: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

关于javascript - app.use(cors()) 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46024363/

相关文章:

javascript - 根据对子项中父项的引用查找文档

node.js - node js express项目如何添加环境变量

javascript - 为 Node.js 中的链式函数编写 Jest 测试

javascript - 即使函数有返回值,Nodejs也会在控制台上显示未定义

javascript - 在序列中添加 3 个空格

javascript - 如何在CKEditor中保存变量?

javascript - Express 应用程序中未加载静态 Javascript 文件

Javascript 警报功能不起作用

javascript - 如何自动聚焦一个领域?

node.js - 在封闭方法中访问 Node JS Express 请求中的 POST 响应数据