You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome扩展本地开发Cookie问题求助:无需HTTPS证书的解决方案

本地无证书启用HTTPS(Express/NestJS)

针对你的跨源Cookie问题,核心是要让本地服务跑在HTTPS环境下,以下是无需手动安装证书的方案:

方案1:Express自动生成临时自签名证书

直接用Node.js内置的crypto和https模块,在启动服务时自动生成临时证书,无需手动安装:

const express = require('express');
const https = require('https');
const fs = require('fs');
const crypto = require('crypto');

// 生成临时自签名证书(首次运行自动创建文件)
function generateTempCert() {
  const { privateKey, publicKey } = crypto.generateKeyPairSync('rsa', {
    modulusLength: 2048,
    publicKeyEncoding: { type: 'spki', format: 'pem' },
    privateKeyEncoding: { type: 'pkcs8', format: 'pem' },
  });
  fs.writeFileSync('./temp-key.pem', privateKey);
  fs.writeFileSync('./temp-cert.pem', publicKey);
  return {
    key: privateKey,
    cert: publicKey,
  };
}

const app = express();

// 你的业务路由和中间件
app.get('/', (req, res) => {
  res.send('HTTPS 服务运行中');
});

// 读取或生成证书,启动HTTPS服务
const credentials = fs.existsSync('./temp-key.pem') 
  ? {
      key: fs.readFileSync('./temp-key.pem'),
      cert: fs.readFileSync('./temp-cert.pem'),
    }
  : generateTempCert();

https.createServer(credentials, app).listen(3000, () => {
  console.log('服务已启动:https://localhost:3000');
});

首次启动会自动生成temp-key.pem和temp-cert.pem文件,Chrome访问时会提示“不安全”,只需点击「高级」→「继续前往localhost(不安全)」即可,后续请求会自动信任该临时证书,无需重复操作。

方案2:NestJS集成HTTPS服务

在NestJS中同样可以用内置模块实现,先写一个证书生成脚本,再在启动时加载:

1. 证书生成脚本(cert-generate.ts)

import * as fs from 'fs';
import * as crypto from 'crypto';

export function generateTempCert() {
  const { privateKey, publicKey } = crypto.generateKeyPairSync('rsa', {
    modulusLength: 2048,
    publicKeyEncoding: { type: 'spki', format: 'pem' },
    privateKeyEncoding: { type: 'pkcs8', format: 'pem' },
  });
  fs.writeFileSync('./temp-key.pem', privateKey);
  fs.writeFileSync('./temp-cert.pem', publicKey);
}

2. 启动文件集成

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as fs from 'fs';
import { generateTempCert } from './cert-generate';

async function bootstrap() {
  // 检查证书是否存在,不存在则生成
  if (!fs.existsSync('./temp-key.pem')) {
    generateTempCert();
  }

  const httpsOptions = {
    key: fs.readFileSync('./temp-key.pem'),
    cert: fs.readFileSync('./temp-cert.pem'),
  };

  const app = await NestFactory.create(AppModule, { httpsOptions });
  await app.listen(3000);
  console.log('服务已启动:https://localhost:3000');
}
bootstrap();

后续Cookie配置

启动HTTPS服务后,即可正常设置Cookie参数:

// Express示例
res.cookie('your-cookie-name', 'value', {
  sameSite: 'None',
  secure: true,
  httpOnly: true,
});

此时Chrome会正常回传Cookie,解决跨源请求的SameSite问题。

内容的提问来源于stack exchange,提问作者eversor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 05:35:16