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

首次使用Gophish API遇CORS错误:Authorization头不被允许

解决Gophish API跨域请求失败问题

问题情况

浏览器报错:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://MY_GOPHISH_SERVER_URL:3333/api/smtp. (Reason: header ‘authorization’ is not allowed according to header ‘Access-Control-Allow-Headers’ from CORS preflight response).

请求代码:

fetch("MY_GOPHISH_SERVER_URL:3333/api/smtp", {
        method: "GET",
        headers: {
            Authorization : MY_GOPHISH_API_KEY
        },
    })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error.message))
}

补充背景:Gophish浏览器界面运行正常,POSTMAN需禁用SSL验证才能请求成功,SSL证书已被浏览器认定有效。

解决方法

1. 修改Gophish内置CORS策略

Gophish支持通过配置文件直接调整CORS规则,操作步骤:

  • 找到Gophish的config.json配置文件(默认在程序根目录)
  • 添加或修改cors字段,明确允许Authorization请求头:
{
  "cors": {
    "allowed_origins": ["https://your-frontend-domain.com"], // 替换为你的前端域名,生产环境禁止用"*"
    "allowed_methods": ["GET", "POST", "PUT", "DELETE"],
    "allowed_headers": ["Authorization", "Content-Type"]
  },
  // 保留原有其他配置项
}
  • 重启Gophish服务,配置即可生效

2. 反向代理中转请求(生产环境推荐)

如果不想修改Gophish核心配置,可通过Nginx等反向代理工具在中间层处理CORS:

  • 配置Nginx转发请求到Gophish,同时添加CORS响应头:
server {
    listen 443 ssl;
    server_name your-proxy-domain.com;

    ssl_certificate /path/to/full-chain-cert.pem; # 确保包含完整证书链
    ssl_certificate_key /path/to/private-key.pem;

    location /api/ {
        proxy_pass https://MY_GOPHISH_SERVER_URL:3333/api/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;

        # 配置CORS规则
        add_header Access-Control-Allow-Origin "https://your-frontend-domain.com";
        add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
        add_header Access-Control-Allow-Headers "Authorization, Content-Type";

        # 快速处理OPTIONS预请求
        if ($request_method = OPTIONS) {
            return 204;
        }
    }
}
  • 前端请求改为指向代理域名,即可绕过跨域限制

3. 测试用临时方案:浏览器禁用CORS

仅用于本地测试,禁止生产环境使用:

  • Firefox:安装CORS Everywhere插件,或在about:config中设置security.fileuri.strict_origin_policy为false

SSL证书问题补充

POSTMAN需禁用SSL验证才能成功,大概率是Gophish配置的证书链不完整(缺少中间证书)。解决方式:

  • 检查Gophish的SSL配置,确保使用包含完整证书链的证书文件
  • 或通过反向代理配置完整的证书链,替代Gophish直接处理SSL请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:10:24