【问题标题】:what does app.use(cors()) do?app.use(cors()) 是做什么的?
【发布时间】:2018-02-11 22:37:39
【问题描述】:

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

app.use(cors());

它实际上是做什么的?这个函数如何在服务器上启用cors

【问题讨论】:

  • 它可能会启用CORS?
  • 好的,但要访问其他 API 或被某人访问?只需声明这一行,我就可以访问网络上的其他 API?
  • 您正在配置 您的 服务器以供任何人访问,而不是客户端访问其他服务器。 CORS 不是代理
  • 非常感谢!

标签: javascript node.js express


【解决方案1】:

摘要

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

真正的作用

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

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

所以CORS 基本上是服务器发送给浏览器的一组标头。 在没有其他信息的情况下调用 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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-06
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    相关资源
    最近更新 更多