我知道我们无法访问具有与我们不同的域的 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/