我知道我们不能访问一个与我们不同领域的API。然而,我看到很多人在express中安装cors模块来使用API,然后像这样使用它:
cors
app.use(cors());
它实际上是做什么的?此函数如何在服务器上启用cors?
kpbpu0081#
正如你所说,它支持CORS(跨域资源共享)。为了使您的服务器可以被其他来源(域)访问。
CORS
调用use(cors())将使express server能够响应预检请求。预检请求基本上是在实际请求发送之前发送到服务器的OPTION请求,以询问服务器接受哪个来源和哪个请求选项。所以CORS基本上是服务器发送给浏览器的一组头。调用cors()而不使用其他信息将设置以下默认值:
use(cors())
express server
OPTION
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
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
2条答案
按热度按时间kpbpu0081#
摘要
正如你所说,它支持
CORS
(跨域资源共享)。为了使您的服务器可以被其他来源(域)访问。它真正的作用
调用
use(cors())
将使express server
能够响应预检请求。预检请求基本上是在实际请求发送之前发送到服务器的
OPTION
请求,以询问服务器接受哪个来源和哪个请求选项。所以
CORS
基本上是服务器发送给浏览器的一组头。调用cors()
而不使用其他信息将设置以下默认值:这些被翻译成这些标题:
这样做的基本上是使您的服务器可以访问任何通过浏览器从您的服务器请求资源的域。
你可以在这里检查所有的express
cors
配置:https://github.com/expressjs/cors你也可以在这里阅读更多关于浏览器
cors
:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORSbd1hkmkf2#
CORS是一个限制Web浏览器从一个域向另一个域发出API请求的功能。例如:您的前端是https://domain1.com,后端是https://domain2.com。现在出现CORS策略错误。要在后端解决此错误,请更新主js文件。(我使用node js作为后端)
解决方案(1)
解决方案(2)
访问链接获取更多信息:express cors