Express 使用 cors 模块支持跨域

本文被收录到:

Node.js 教程

本专题关于 Node.js 基础知识和模块

目录

cors 是一个 Node.js 中的 npm 包,它提供了一个非常方便的方式来启用跨源资源共享(Cross-Origin Resource Sharing, CORS)。CORS 是一种机制,它使用额外的 HTTP 头来告诉浏览器允许一个域上的网页访问另一个域上的资源。在默认情况下,出于安全考虑,浏览器实施了同源策略(Same Origin Policy),不允许不同来源的脚本请求资源。

当你在开发一个 API 或者 Web 服务,并且希望让其他域名下的前端应用能够访问你的服务时,就需要用到 cors 这样的中间件来处理这些跨域请求。

如何安装 cors

你可以通过 npm 来安装 cors 模块:

npm install cors --save

使用 cors

下面是一个简单的例子,展示了如何在 Express 应用中使用 cors:

  1. 首先确保你已经安装了 Express 和 Cors:

    npm install express cors
  2. 在你的应用中引入并使用 cors:

    const express = require('express');
    const cors = require('cors');
    
    const app = express();
    
    // 使用 cors 中间件
    app.use(cors());
    
    app.get('/api/data', function(req, res) {
      res.json({ message: 'Here is the data.' });
    });
    
    app.listen(3000, function() {
      console.log('Server is running on http://localhost:3000');
    });

在这个例子中,app.use(cors()) 启用了 CORS 支持,这意味着来自任何源的请求都可以访问这个 API。如果你想要限制允许的来源,可以传递一个选项对象给 cors 函数,例如指定 origin 选项来控制哪些域名可以访问你的 API。

配置 cors

你可以通过传递配置对象来更精细地控制 CORS 行为。例如:

app.use(cors({
  origin: function(origin, callback) {
    if (!origin || origin === "http://example.com") {
      callback(null, true)
    } else {
      callback(new Error('Not allowed by CORS'))
    }
  },
  credentials: true // 允许 cookie 跨域
}));

这里 origin 属性设置了一个回调函数,用于验证请求是否来自允许的源。credentials 设置为 true 则表示服务器支持 cookie 跨域请求。

总之,cors 是一个非常有用的工具,可以帮助你轻松管理你的 API 的跨域请求。根据你的具体需求调整其配置选项,以确保既安全又开放的服务接口。

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
搜神记
777 文章
4 教程
8 项目
随机推荐
JavaScript getter和setter
WordPress 添加文章自定义字段
Vue3 挂载全局方法
Git push 错误:Updates were rejected because the remote contains work that you do not have locally
Node.js 内置模块
JavaScript 和 CSS 检测横屏适配
JavaScript 焦点管理
HTML 对话框元素 dialog