javascript app.use(cors())的作用是什么?

7hiiyaii  于 2023-09-29  发布在  Java
关注(0)|答案(2)|浏览(115)

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

app.use(cors());

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

kpbpu008

kpbpu0081#

摘要

正如你所说,它支持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
你也可以在这里阅读更多关于浏览器corshttps://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

bd1hkmkf

bd1hkmkf2#

CORS是一个限制Web浏览器从一个域向另一个域发出API请求的功能。例如:您的前端是https://domain1.com,后端是https://domain2.com。现在出现CORS策略错误。要在后端解决此错误,请更新主js文件。(我使用node js作为后端)
解决方案(1)

app.use(cors())

解决方案(2)

var express = require('express')
var cors = require('cors')
var app = express()

var corsOptions = {
  origin: 'https://domain1.com',
}
app.get('/',cors(corsOptions),(req,res) =>{
res.json()
})

访问链接获取更多信息:express cors

相关问题