读vite源码之cors中间件

112 阅读1分钟

cors(跨域资源共享)是一个 Node.js 中常用的包,用于管理跨域 HTTP 请求。下面是一些 cors 常见的用法:

  1. 基本用法:允许跨域请求,不带任何配置。这将允许来自任何域的请求。

    const express = require('express');
    const cors = require('cors');
    const app = express();
    
    app.use(cors());
    
  2. 指定允许的来源:通过配置 origin 选项,你可以指定哪些域名可以访问你的 API。

    const corsOptions = {
      origin: 'http://example.com', // 允许 example.com 访问
    };
    
    app.use(cors(corsOptions));
    
  3. 允许多个来源:你可以使用数组来指定多个允许的来源。

    const corsOptions = {
      origin: ['http://example1.com', 'http://example2.com'],
    };
    
    app.use(cors(corsOptions));
    
  4. 支持预检请求:当使用一些 HTTP 方法(如 PUT、DELETE、以及带自定义标头的请求)时,浏览器会先发送一个预检请求(OPTIONS 请求)。你可以通过 methodspreflightContinue 选项来处理这些预检请求。

    const corsOptions = {
      origin: 'http://example.com',
      methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
      preflightContinue: false, // 禁用预检请求处理
    };
    
    app.options('*', cors(corsOptions));
    app.use(cors(corsOptions));
    
  5. 配置标头:你可以使用 allowedHeaders 选项来指定允许的标头。这对于控制客户端在请求中可以设置哪些标头很有用。

    const corsOptions = {
      origin: 'http://example.com',
      allowedHeaders: 'Content-Type,Authorization',
    };
    
    app.use(cors(corsOptions));
    
  6. 使用通配符:你可以使用通配符 * 允许任何来源、任何方法,但请小心使用它,因为这可能导致安全问题。

    const corsOptions = {
      origin: '*',
      methods: '*',
    };
    
    app.use(cors(corsOptions));
    

这些只是 cors 包的一些常见用法示例。根据你的具体需求,你可以根据文档中的更多配置选项来自定义 cors 行为。请注意,cors 包不仅适用于 Express 应用,还适用于其他 Node.js HTTP 服务器。