在 Express/Node 应用程序中比较/实现 `app.use(cors(corsOptions));` 和 `app.options('*', cors(corsOptions));`
Posted
技术标签:
【中文标题】在 Express/Node 应用程序中比较/实现 `app.use(cors(corsOptions));` 和 `app.options(\'*\', cors(corsOptions));`【英文标题】:Comparing/Implementing `app.use(cors(corsOptions));` and `app.options('*', cors(corsOptions));` in Express/Node Application在 Express/Node 应用程序中比较/实现 `app.use(cors(corsOptions));` 和 `app.options('*', cors(corsOptions));` 【发布时间】:2019-03-27 07:01:06 【问题描述】:我是在 Node/Express 应用程序中实现 CORS(为所有人启用)的新手。我在app.js
中找到了一段代码,如下所述:
const express = require('express');
const corsOptions =
origin: '*',
;
const app = express();
app.use(cors(corsOptions));
app.options('*', cors(corsOptions));
app.listen(config.PORT);
我发现最后两行代码是多余的。我不确定,因为运行 Node/Express 项目的知识/理解和资源有限,我现在无法测试 CORS。
如果我们提及app.use(cors(corsOptions));
或app.options('*', cors(corsOptions));
就足够了吗?
如果是,它们的实施是否有区别?
如果否,每行代码如何配置 Express 应用程序?
【问题讨论】:
【参考方案1】:是的,options()
的作用完全相同,但仅适用于请求路径 *
和 http OPTIONS
请求。
use()
不会关心请求的动词,但如果需要,可以将请求路径作为第一个参数。
【讨论】:
“httpOPTIONS
请求”是什么意思?我想你的意思是 corsOptions,不是吗?
这是另一种类型的请求,例如 GET、POST 等。要查看是否为服务启用了 Cors,通常会发送 OPTIONS 类型的“飞行前”请求。它期望一些 Cors 头回来。但是,如果您希望所有请求都可以从另一个域访问,则应将其添加到所有类型的请求中。以上是关于在 Express/Node 应用程序中比较/实现 `app.use(cors(corsOptions));` 和 `app.options('*', cors(corsOptions));`的主要内容,如果未能解决你的问题,请参考以下文章
Nodemon 未在 React-Express-Node 应用程序中刷新浏览器
从 Express/node.js Web 应用程序预填充 HTML/Jade