app.use(cors()) 有什么作用?

Jef*_*oes 4 javascript node.js express

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

app.use(cors());
Run Code Online (Sandbox Code Playgroud)

它实际上有什么作用?这个功能如何cors在服务器上启用?

Bam*_*ieh 9

抽象的

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

它的真正作用

调用use(cors())将使 能够express server响应预检请求。

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

所以CORS基本上是由服务器发送到浏览器的一组标头。cors()没有附加信息的调用将设置以下默认值:

{
  "origin": "*",
  "methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
  "preflightContinue": false,
  "optionsSuccessStatus": 204
}
Run Code Online (Sandbox Code Playgroud)

这些被翻译成这些标题:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET,HEAD,PUT,PATCH,POST,DELETE
Status Code: 204
Run Code Online (Sandbox Code Playgroud)

这样做的目的基本上是使您的服务器可被任何通过浏览器从您的服务器请求资源的域访问。

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

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