CRMEB的PHP版本跨域问题

news/2025/10/25 15:43:44/文章来源:https://www.cnblogs.com/79524795-Tian/p/19165475

1. /config/cookie.php修改为

return ['expire'    => 0,'path'      => '/','domain'    => '','secure'    => false,'httponly'  => false,'setcookie' => true,// 正确的 CORS 头(开发环境)'header'    => ['Access-Control-Allow-Origin'      => 'http://localhost:1617','Access-Control-Allow-Credentials' => 'true','Access-Control-Allow-Methods'     => 'GET,POST,PUT,PATCH,DELETE,OPTIONS',// 临时兼容:把 authori-zation 也放进来(注意是连字符+全小写)'Access-Control-Allow-Headers'     => 'authorization, Authorization, authori-zation, content-type, x-requested-with, if-modified-since, if-none-match, if-unmodified-since, form-type, cb-lang','Access-Control-Max-Age'           => '1728000','Vary'                             => 'Origin',],'token_name' => 'Authorization',
];

2. public/index.php修改为

//允许跨域
// === CORS(支持凭证)开始 ===
$origin = $_SERVER['HTTP_ORIGIN'] ?? '';
// 允许的前端域名白名单(按你实际前端域名填写)
$allowOrigins = ['https://0009.012539.cn','http://localhost:1617',   // 本地调试可选
];if ($origin && in_array($origin, $allowOrigins, true)) {header("Access-Control-Allow-Origin: $origin");header("Access-Control-Allow-Credentials: true");header("Access-Control-Allow-Methods: GET,POST,PUT,DELETE,PATCH,OPTIONS");header("Access-Control-Allow-Headers: DNT,Keep-Alive,User-Agent,Cache-Control,Content-Type,Authorization,X-Requested-With,Platform,token");header("Vary: Origin"); // 让代理/缓存按来源区分
}// 预检请求直接放行并返回 204(必须带上相同的 CORS 头)
if (strtoupper($_SERVER['REQUEST_METHOD'] ?? '') === 'OPTIONS') {http_response_code(204);header("Content-Length: 0");exit();
}
// === CORS 结束 ===//end

3. VUE后台/src/libs/request.js

// src/libs/request.js
// +---------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +---------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +---------------------------------------------------------------------import axios from 'axios';
import { Message } from 'element-ui';
import { getCookies, removeCookies } from '@/libs/util';
import Setting from '@/setting';
import router from '@/router';// 用实例自己的默认项;把 withCredentials 放到实例里(很关键)
const service = axios.create({baseURL: Setting.apiBaseURL,timeout: 10000,withCredentials: true, // ✅ 让跨域请求能带上 cookie
});// ❌ 删掉这句(对实例没作用,而且容易误导):
// axios.defaults.withCredentials = true;// 请求拦截器
service.interceptors.request.use((config) => {// 统一 baseURL;kefu 用 kefuapiconfig.baseURL = config.kefu? Setting.apiBaseURL.replace(/adminapi/, 'kefuapi'): Setting.apiBaseURL;// 上传文件时不要手动写 boundary,交给浏览器(可留可去)// if (config.file) {//   config.headers['Content-Type'] = 'multipart/form-data';// }const token = getCookies('token');const kefuToken = getCookies('kefu_token');// 🚫 彻底清掉历史错别字请求头,避免被浏览器带出去if (config.headers) {delete config.headers['authori-zation'];delete config.headers['Authori-zation'];} else {config.headers = {};}// ✅ 统一用标准 Authorizationconst accessToken = config.kefu ? kefuToken : token;if (accessToken) {// 如果后端不需要 Bearer,就改成:config.headers['Authorization'] = accessToken;config.headers['Authorization'] = `Bearer ${accessToken}`;}return config;},(error) => Promise.reject(error),
);// 响应拦截器
service.interceptors.response.use((response) => {// 兼容后端有时返回字符串的情况const raw = response && response.data;const obj = typeof raw === 'string' ? JSON.parse(raw) : (raw || {});const code = obj.status ?? 0;switch (code) {case 200:return obj;// 登录失效(后台)case 110002:case 110003:case 110004:localStorage.clear();removeCookies('token');removeCookies('expires_time');removeCookies('uuid');router.replace({ name: 'login' });return Promise.reject(obj);// 客服登录失效case 110005:case 110006:case 110007:removeCookies('kefuInfo');removeCookies('kefu_token');removeCookies('kefu_expires_time');removeCookies('kefu_uuid');router.replace({ path: '/kefu' });return Promise.reject(obj);case 110008:router.replace({ name: 'system_opendir_login' });return Promise.reject(obj);default:return Promise.reject(obj || { msg: '未知错误' });}},(error) => {// 这里以前传了 undefined 进去导致 element-ui 报 “type” 错误const msg =error?.response?.data?.msg ||error?.response?.data?.message ||error?.message ||'请求失败';Message.error(msg);return Promise.reject(error);},
);export default service;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/946204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 医疗级胶水厂家最新推荐榜单:权威测评 + 实力厂家甄选,聚焦合规性与技术创新

引言 医疗级胶水作为医疗器械核心配套材料,其品质直接关联诊疗安全。据中国胶粘剂和胶粘带工业协会 2025 年 Q3 测评数据显示,国内医疗级胶水市场合规产品仅占 72%,35% 的采购纠纷源于粘结强度不达标或认证缺失。为…

NUIST-OOP-Lab02

🧪 实验报告 一、实验名称 现代C++编程初体验 二、实验目的加深对OOP概念(类、对象)和特性(封装)的理解 会用C++正确定义、实现、测试类;会创建对象,并基于对象编程 加深对C++内存资源管理技术的理解,能够解释…

2025 年最新推荐!国内球墨铸铁管厂家排行榜:涵盖离心 / 市政 / 防腐 / 给水 / 水利工程用,助力工程高效选材

引言 在基础设施建设领域,球墨铸铁管是供水、排水、燃气输送工程的核心建材。为精准推荐优质品牌,中国建筑金属结构协会管道分会联合行业权威机构开展 2025 年度测评,测评覆盖国内 68 家主流球墨铸铁管企业,从产品…

Paper: Learning Affordances at Inference-Time for Vision-Language-Action Models

**中文标题:** 视觉-语言-动作模型的推理时间可供性学习 **作者机构:** Ameesh Shah, William Chen, Adwait Godbole, Federico Mora, Sanjit A. Seshia, Sergey Levine, (加州大学伯克利分校) **论文地址:** https…

DHCP 泛洪攻击小实验

DHCP 泛洪攻击攻击原理:通过虚拟随机生成的mac 地址占用DHCP 服务器中的地址池,达到正常机器无法获取到IP 地址从而无法上网DHCP 协议原理DHCP 是为了解决静态IP 地址,每次都需要进行手动输入IP的不方便 DHCP 客户端…

2025 年热转印花膜优质厂家最新推荐排行榜:聚焦产品质量与客户满意度,涵盖硅胶 / 五金 / 塑胶等多材质应用场景

引言 随着热转印行业规模持续扩大,热转印花膜作为关键装饰材料,市场需求年增长率达 18%(数据来源:中国热转印行业协会 2024 年度报告)。为帮助采购者精准筛选优质厂家,本次榜单由中国热转印行业协会联合第三方检…

2025 年国内除湿机厂家最新推荐排行榜:工业 / 家用场景优质品牌精选指南仓库 / 大型 / 车间除湿机公司推荐

引言 当前,无论是工业生产中的仓库货物存储、商业运营里的地下空间环境维护,还是家庭生活中的室内防潮需求,对除湿机的依赖度都日益提升。但除湿机市场品牌繁杂,产品性能差异大,部分产品存在除湿效率低、能耗高、…

题解:P13611 [NWRRC 2022] New Time

非常简单一模拟,使我小脑旋转 题目传送门 思路 首先想到的就是把题目给定的字符串转换为整数,我们可以枚举字符串的每一位,在遇到 : 前,将对应的数字加到表示小时的变量上,遇到 : 后,将对应的数字加到表示分钟的…

第1期(两题)

请注意:样例不一定正确(发现问题、知道解法必关)星际旅行 题目描述 宇宙中有\(n\)个星系,每个星系\(i\)有能量值\(e_i\)。存在\(m\)条双向虫洞,连接\(u\)和\(v\)星系,使用虫洞\(u→v\)需消耗能量c,并获得\(d\)的…

门店运营成本高企?AI智能解决方案助力降本增效 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Paper: Diffusion Transformers with Representation Autoencoders

**1 Diffusion Transformers with Representation Autoencoders** **中文标题:** 带有表征自动编码器的扩散 Transformer **作者机构:** Boyang Zheng, Nanye Ma, Shengbang Tong, Saining Xie. New York University…

2025 年模板加固源头厂家最新推荐榜:优质企业权威测评出炉,含高精 / 剪力墙等多类型模板加固品牌

引言 在建筑工程质量与效率要求不断提升的当下,模板加固产品的选择对工程安全、成本控制至关重要。为帮助行业筛选优质源头厂家,中国建筑金属结构协会联合建筑模板脚手架专业委员会开展 2025 年度模板加固品牌测评,…

102302155张怡旋数据采集第一次作业

作业一 核心代码与运行结果大体思路:在写代码之前我先进入了该网页查看源代码的信息,了解了html的结构分布等,再进行代码的编写。代码首先用requests发送 GET 请求,添加User-Agent模拟浏览器,避免反爬拦截;接着检…

序列异或求贡献

序列异或求贡献是一类常见的题目,经典做法无非是求前后缀,按进制位拆贡献累计答案,但是需要对具体问题具体分析。 异或和之和 设前缀异或和为 \(sum_i\)(\(sum_0\)=0),对 \(sum_i\) 二进制拆位。\(tot1_k\) 为二…

深入解析:Java外功精要(2)——Spring IoCDI

深入解析:Java外功精要(2)——Spring IoC&DIpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

2025年矩形橡胶支座源头厂家权威推荐榜单:GJZ矩形橡胶支座/圆形橡胶桥梁支座/桥梁橡胶支座源头厂家精选

在交通基础设施建设持续发展的背景下,矩形橡胶支座作为桥梁结构的关键传力部件,其质量直接关系到整体工程的安全性与耐久性。 矩形橡胶支座主要由多层薄钢板与橡胶片叠合而成,通过钢板约束橡胶的横向变形,从而显著…

2025年永磁同步变频器加工厂权威推荐榜单:高压变频柜装置/通用矢量变频器/高压变频器源头厂家精选

随着工业自动化程度不断提升,永磁同步变频器凭借其高效节能特性,正成为电机控制领域的重要技术方向。 永磁同步变频器市场在2025年预计将保持12.5%的年增长率,其中高压变频器在矿山、冶金等重工业领域需求尤为旺盛,…

首批CCF教学案例大赛资源上线:涵盖控制仿真、算法与机器人等9大方向 - 教程

首批CCF教学案例大赛资源上线:涵盖控制仿真、算法与机器人等9大方向 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fami…

HT-PBR-0006SMG:20W 连续、3 相位失衡,一颗贴片省掉整块匹配网络

HT-PBR-0006SMG:20W 连续、3 相位失衡,一颗贴片省掉整块匹配网络HT-PBR-0006SMG 的出场像一场静悄悄的革命,它把 0.5 到 6 GHz 的广阔频域折叠进一枚仅几毫米见方的陶瓷体,却把“功率”二字写进了名字。很多人第一…

2025年人字纹机织布源头厂家权威推荐榜单:700g机织布/锦纶工业用布/800g机织布源头厂家精选

人字纹机织布行业概况与技术特性 人字纹机织布作为工业用纺织品的重要组成部分,因其独特的斜纹编织结构和优异的力学性能,在工业生产中占据重要地位。根据行业数据分析,2025年全球人字纹机织布市场规模预计将达到85…