我知道我们无法访问具有不同域名的API。但是,我看到许多人在Express中安装cors
模块以使用API,然后像这样使用它:
app.use(cors());
它实际上做了什么?该功能如何在服务器上启用cors
?
答案 0 :(得分: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
这样做基本上使您的服务器可以通过浏览器从您的服务器请求资源的任何域访问。
您可以在此处查看所有明确的cors
配置:https://github.com/expressjs/cors
您还可以在此处详细了解浏览器cors
:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS