在 1Panel 中导入企业版许可证进行激活时,如果点击导入后没有反应,同时浏览器控制台出现以下报错,可以按本文处理:
Access to XMLHttpRequest ... has been blocked by CORS policy:
Response to preflight request doesn't pass access control check:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
这表示浏览器的 CORS 预检没有通过,后续的许可证激活请求可能尚未发出。
处理方法
1. 找到失败的 OPTIONS 请求
按 F12 打开浏览器开发者工具,切换到 Network(网络),然后重新导入许可证。
找到失败的 OPTIONS 请求,查看它的 Request URL、Status Code、Origin 和响应头。仅凭控制台报错无法确定是哪一层返回了错误,必须先确认请求地址。
2. 检查对应的代理或安全网关
如果 Request URL 经过自己管理的 Nginx、OpenResty、WAF 或其他网关,请确认:
OPTIONS请求没有被拦截或重定向;- 预检响应返回
200或204; - 响应中包含与实际请求匹配的 CORS 响应头。
例如:
Access-Control-Allow-Origin: https://你的1Panel访问地址
Access-Control-Allow-Methods: POST, OPTIONS
Access-Control-Allow-Headers: Authorization, Content-Type
允许的方法和请求头应以 Network 中的 Access-Control-Request-Method、Access-Control-Request-Headers 为准。如果请求携带身份凭据,Access-Control-Allow-Origin 必须填写明确的来源地址,不能使用 *。
预检响应和后续实际请求的响应都需要返回匹配的 Access-Control-Allow-Origin。如果后端已经处理 CORS,不要在代理层重复添加。
3. 重新激活并验证
修改配置后重新导入许可证进行激活,并在 Network 中确认:
OPTIONS请求已经成功;- 浏览器随后发出了实际的许可证激活请求。
如果失败的 Request URL 不由自己管理,不要修改无关的 Nginx 配置。请保存该请求的地址、状态码、请求头和响应头截图,然后提交官方技术支持。截图前请隐藏 Cookie、令牌和许可证内容。
关于 CORS 预检和响应头的定义,可参考 MDN CORS 指南。
排查顺序
F12 打开 Network → 重试激活 → 找到失败的 OPTIONS 请求 → 确认请求地址 → 检查对应的反向代理或安全网关 → 重新激活。