当前位置: 首页 > news >正文

【备份】php项目处理跨域请求踩坑

这都是老生常谈的东西了。我还在踩坑,记录一下。

我在项目入口明明写了如下代码:
 

// 处理预检请求 (OPTIONS)
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {header("Access-Control-Allow-Origin: https://xxx.vip");header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");header("Access-Control-Max-Age: 3600");  // 预检缓存时间header("Vary: Origin");  // 修复缓存问题http_response_code(204);  // 明确状态码exit;
}// 处理正式请求
header("Access-Control-Allow-Origin: xxx.vip");
header("Access-Control-Expose-Headers: Content-Length, X-Custom-Header");  // 按需暴露头
header("Vary: Origin");//此代码可以解决浏览器一个接口同时请求2次的问题 start
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Pragma: no-cache");
//此代码可以解决浏览器一个接口同时请求2次的问题 end

此代码经过测试是可以正常使用的。

但是现在浏览器跨域访问我的接口,依然报跨域错误,问了各大AI,也做了多重尝试,结果还是不行。

我这牙都块咬碎了!
现象:


 

这是我的代码:
// 处理预检请求 (OPTIONS)
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    header("Access-Control-Allow-Origin: xxx22.vip");
    header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
    header("Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With");
    header("Access-Control-Max-Age: 3600");  // 预检缓存时间
    header("Vary: Origin");  // 修复缓存问题
    http_response_code(204);  // 明确状态码
    exit;
}

// 处理正式请求
header("Access-Control-Allow-Origin: xxx2.vip");
header("Access-Control-Expose-Headers: Content-Length, X-Custom-Header");  // 按需暴露头
header("Vary: Origin");

这是浏览器响应头:
access-control-allow-origin:
https://wx_customer_service_monitor1.excn.vip
access-control-expose-headers:
Content-Length, X-Custom-Header
content-encoding:
gzip
content-type:
text/html; charset=utf-8
date:
Thu, 27 Feb 2025 09:00:09 GMT
server:
nginx
vary:
Accept-Encoding
vary:
Origin

当前现象:
浏览器请求的api接口返回:跨域检测无效(我的代码没有输出这行代码)

确定用了几种方式,以上代码改来改去,翻来覆去测,还是不行,最后带着实在不相信是框架代码的问题去复制了“跨域检测无效”,去代码里面搜索了一番,结果!! 卧槽~!!!!,竟然在代码里面做了跨域处理,只是这跨域处理不对,导致我在入口怎么改都没用!!

我的天!竟然是很久以前埋下的坑,我就说我不会犯这种错误,这下打脸了!啪啪啪!!!

总结:有时候遇到反复解决不了的问题还是多怀疑下自己。

END

相关文章:

【备份】php项目处理跨域请求踩坑

这都是老生常谈的东西了。我还在踩坑,记录一下。 我在项目入口明明写了如下代码: // 处理预检请求 (OPTIONS) if ($_SERVER[REQUEST_METHOD] OPTIONS) {header("Access-Control-Allow-Origin: https://xxx.vip");header("Access-Cont…...

目标检测YOLO实战应用案例100讲-面向无人机图像的小目标检测

目录 知识储备 YOLO v8无人机拍摄视角小目标检测 数据集结构 环境部署说明 安装依赖 模型训练权重和指标可视化展示 训练 YOLOv8 PyQt5 GUI 开发 主窗口代码 main_window.py 使用说明 无人机目标跟踪 一、目标跟踪的基本原理 二、常用的目标跟踪算法 基于YOLOv…...

实现 Leaflet 多类型点位标记与聚合功能的实战经验分享

在现代的地理信息系统(GIS)应用中,地图功能是不可或缺的一部分。无论是展示商业网点、旅游景点还是公共服务设施,地图都能以直观的方式呈现数据。然而,当数据量较大时,地图上可能会出现大量的标记点&#x…...

Linux 环境“从零”部署 MongoDB 6.0:mongosh 安装与数据操作全攻略

前提 完成linux平台部署MongoDB【部署教程】且完成mongosh的安装 由于本人使用的是6.0版本的MongoDB,新版本 MongoDB(尤其是 6.0 及以上版本)已经不再默认捆绑传统的 mongo shell,而改用新的 MongoDB Shell(mongosh&am…...

深度学习五大模型:CNN、Transformer、BERT、RNN、GAN详细解析

# 深度学习五虎将:当CNN遇见Transformer的奇幻漂流 ## 序章:AI江湖的兵器谱排行 2012年,多伦多大学的厨房里,Hinton的学生们用GPU煎了个"AlexNet"荷包蛋,从此开启了深度学习的热兵器时代。如今五大模型各显…...

004 rocketmq集群

1、集群模式 在RocketMQ中,集群的部署模式是比较多的,有以下几种: public class ConsumerDemo {public static void main(String[] args) throws Exception {DefaultMQPushConsumer consumer new DefaultMQPushConsumer("test-group&qu…...

基于 Python 深度学习的电影评论情感分析可视化系统(2.0 全新升级)

基于 Python 深度学习的电影评论情感分析可视化系统,基于 Flask 深度学习,构建了一个 影评情感分析系统,能够 自动分析影评、计算情感趋势 并 可视化展示,对于电影行业具有重要参考价值! 基于 Python 深度学习的电影评…...

Linux内核配置与构建原理

Kconfig文件 Kconfig是Linux内核中用于配置功能的脚本语言系统,由众多内核源码树中每个目录下的Kconfig文件组成。它定义Linux相关的配置选项层次结构和依赖关系。 menuconfig工具,会抓取Kconfig中的信息,为用户输出友好的交互式菜单选项配…...

大语言模型微调的基本概念介绍

大型语言模型(LLMs)正在以惊人的速度发展,LLM微调的潜力更是如此。大型语言模型的生命周期有几个关键步骤,今天我们将要介绍这个周期中最丰富、最耗时的一部分——LLM微调过程。 大语言模型的生命周期 在深入了解大型语言模型&a…...

实例分割 | yolov11训练自己的数据集

前言 因工作要求使用的都是yolov5系列的模型,今天学习一下最先进的yolov11,记录一下环境配置及训练过程。 1.项目下载及环境安装 源码位置:yolov11 可以看到,这里要求python版本大于等于3.8,我这里安装python3.10.…...

vue3:四嵌套路由的实现

一、前言 1、嵌套路由的含义 嵌套路由的核心思想是&#xff1a;在某个路由的组件内部&#xff0c;可以定义子路由&#xff0c;这些子路由会渲染在父路由组件的特定位置&#xff08;通常是 <router-view> 标签所在的位置&#xff09;。通过嵌套路由&#xff0c;你可以实…...

AIGC和搜索引擎的异同

AIGC&#xff08;生成式人工智能&#xff09;与搜索引擎的核心差异体现在信息处理方式和输出形态上&#xff0c;我们可以从以下维度对比&#xff1a; 一、工作原理的本质差异 信息检索机制 搜索引擎&#xff1a;基于关键词匹配&#xff08;如"中暑怎么办"→返回相关…...

ES批量查询

在 Elasticsearch 中&#xff0c;multi_search&#xff08;也称为 msearch&#xff09;是一种允许你在单个请求中执行多个搜索操作的 API。它可以显著减少网络开销&#xff0c;尤其是在需要执行多个查询时。multi_search 会将多个查询打包成一个请求发送给 Elasticsearch&#…...

Vue2学习

一、Vue3 基础 监视属性 天气案例 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>天气案例</…...

PySide(PyQT)重新定义contextMenuEvent()实现鼠标右键弹出菜单

在 PySide中&#xff0c;contextMenuEvent() 是 QWidget 类&#xff08;以及继承自它的所有子类&#xff09;的一个事件处理方法&#xff0c;主要用于处理上下文菜单事件&#xff0c;也就是当用户在控件上右键点击时触发的事件。 • 通过重新定义contextMenuEvent()来实现自定…...

Storm实时流式计算系统(全解)——下

storm编程案例-网站访问来源实时统计-需求 storm编程-网站访问来源实时统计-代码实现 根据以上条件可以只写一个类&#xff0c;我们只需要写2个方法和一个main&#xff08;&#xff09;&#xff0c;一个读取/发射&#xff08;spout&#xff09;。 一个拿到数据统计后发到redis…...

配置Nginx日志url encode问题

文章目录 配置Nginx日志url encode问题方法1-lua方法2-set-misc-nginx-module 配置Nginx日志url encode问题 问题描述&#xff1a; 当自定义日志输出格式&#xff0c;需要输出http请求中url参数时&#xff0c;如果参数中包含中文&#xff0c;是会进行url encode的&#xff0c…...

JAVA SE 包装类和泛型

文章目录 &#x1f4d5;1. 包装类✏️1.1 基本数据类型和对应的包装类✏️1.2 装箱和拆箱✏️1.3 自动装箱和自动拆箱 &#x1f4d5;2. 泛型✏️2.1 泛型的语法✏️2.2 泛型类的使用✏️2.3 裸类型(Raw Type)✏️2.4 擦除机制✏️2.5 泛型的上界✏️2.6 泛型方法✏️2.7 通配符…...

基于Linux系统的物联网智能终端

背景 产品研发和项目研发有什么区别&#xff1f;一个令人发指的问题&#xff0c;刚开始工作时项目开发居多&#xff0c;认为项目开发和产品开发区别不大&#xff0c;待后来随着自身能力的提升&#xff0c;逐步感到要开发一个好产品还是比较难的&#xff0c;我认为项目开发的目的…...

从零开始开发纯血鸿蒙应用之语音朗读

从零开始开发纯血鸿蒙应用 〇、前言一、API 选型1、基本情况2、认识TextToSpeechEngine 二、功能集成实践1、改造右上角菜单2、实现语音播报功能2.1、语音引擎的获取和关闭2.2、设置待播报文本2.3、speak 目标文本2.4、设置语音回调 三、总结 〇、前言 中华汉字洋洋洒洒何其多…...

OpenClaw安全指南:千问3.5-27B本地化执行权限管控

OpenClaw安全指南&#xff1a;千问3.5-27B本地化执行权限管控 1. 为什么需要OpenClaw安全管控&#xff1f; 去年冬天的一个深夜&#xff0c;我被一阵急促的键盘敲击声惊醒。走进书房时&#xff0c;发现OpenClaw正在自动执行我三天前测试的爬虫脚本——由于没有设置运行时间限…...

从零到一:手把手教你用CANoe和Python脚本实现UDS诊断自动化测试(附完整代码)

从零到一&#xff1a;手把手教你用CANoe和Python脚本实现UDS诊断自动化测试&#xff08;附完整代码&#xff09; 在汽车电子测试领域&#xff0c;UDS&#xff08;Unified Diagnostic Services&#xff09;诊断协议的自动化测试已经成为提升开发效率的关键环节。传统的手动测试方…...

CDN 无法播放音视频?流媒体回源与 Range 配置修复

流媒体应用现在越来越普及&#xff0c;CDN&#xff08;内容分发网络&#xff09;早已成为音视频流畅播放的核心支撑——靠边缘节点就近分发&#xff0c;既能降低延迟&#xff0c;又能减轻源站压力&#xff0c;让用户不用长时间等待就能看高清内容。但实际运维中&#xff0c;“C…...

定制属于自己的AS-I总线

本公司自己已经完成AS-I总线主站、电源、从站模块的纯国产化&#xff0c;可以基于AS-I总线的基础上进行拓展&#xff0c;欢迎有需求的、有想法的各类人士一起撑起AS-I国产化一片天...

OpenClaw自动化周报:Qwen3.5-9B解读工作截图生成总结

OpenClaw自动化周报&#xff1a;Qwen3.5-9B解读工作截图生成总结 1. 为什么需要自动化周报 每周五下午&#xff0c;我都会陷入一种"周报焦虑"——电脑桌面上堆满了会议截图、临时记录的txt文件、微信里的零散对话。手动整理这些碎片信息需要3-4个小时&#xff0c;常…...

青铜器RDM研发管理平台

我们深耕研发管理服务20余年&#xff0c;依托 10 余年研发管理实战经验&#xff0c;累计为超 10000 家企业提供专业培训、为200 余家企业深度咨询&#xff0c;打造完全自主知识产权的研发管理数字化平台 —— 青铜器 RDM。以 IPD、CMMI、Scrum、PMBOK 等业界最佳实践为内核&…...

League-Toolkit:颠覆式英雄联盟客户端增强工具的全攻略

League-Toolkit&#xff1a;颠覆式英雄联盟客户端增强工具的全攻略 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是一款基于官…...

OpenClaw多模态研究:Qwen2.5-VL-7B在学术资料分析中的应用

OpenClaw多模态研究&#xff1a;Qwen2.5-VL-7B在学术资料分析中的应用 1. 为什么选择OpenClawQwen2.5-VL进行学术研究 去年冬天整理博士论文参考文献时&#xff0c;我对着堆积如山的PDF文件突然意识到&#xff1a;传统文献管理工具只能解决"存储"问题&#xff0c;却…...

技术洞察:zyfun如何重构跨平台视频播放体验

技术洞察&#xff1a;zyfun如何重构跨平台视频播放体验 【免费下载链接】zyfun 跨平台桌面端视频资源播放器,免费高颜值. 项目地址: https://gitcode.com/gh_mirrors/zy/zyfun 在数字娱乐快速发展的今天&#xff0c;跨平台视频播放器面临着系统兼容性、性能优化和用户体…...

硬件解放:开源工具突破设备限制的深度探索指南

硬件解放&#xff1a;开源工具突破设备限制的深度探索指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当你的设备被厂商贴上"过时"标签&#x…...