当前位置: 首页 > 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

相关文章:

  • 【JavaSE-2】数据类型与变量
  • Jmeter接口自动化测试读取用例
  • 快速理解Spring 和 Spring Boot 的核心区别
  • 易错点abc
  • 【前端】简单原生实例合集html,css,js
  • 【芯片设计】NPU芯片前端设计工程师面试记录·20250227
  • 什么是GPU
  • DeepSeek-R1自写CUDA内核跑分屠榜:开启GPU编程自动化新时代
  • 【Python爬虫(96)】从0到1:打造爬虫驱动的数据分析平台
  • 【AI气象强短强3】基于双偏振雷达变量垂直廓线特征的短时强降水和雷暴大风短时临近预报方法
  • 分布式Session
  • 深度学习在自动驾驶车辆车道检测中的应用
  • 提升 Spring Boot 系统性能:高效处理实时数据流的 BufferTrigger 使用详解
  • 从零开始自主「起身站立」,上海AI Lab发布最新控制算法,机器人:起猛了
  • TCP协议工作原理详细介绍(形象举例版)
  • 【读书笔记·VLSI电路设计方法解密】问题56:一种设计的门数是多少
  • 如何使用useEffect模拟组件的生命周期?
  • IP-----动态路由OSPF(2)
  • 用kiln微调大模型第二篇
  • C++ | 哈希表
  • 价格周报|本周猪价继续下探,机构预计今年猪价中枢有支撑
  • 首映|《星际宝贝史迪奇》真人电影,不变的“欧哈纳”
  • 用贝多芬八首钢琴三重奏纪念风雨并肩20年
  • 侵害孩子者,必严惩不贷!3名性侵害未成年人罪犯今日执行死刑
  • 温州通报“一母亲殴打女儿致其死亡”:嫌犯已被刑拘
  • 泽连斯基已离开土耳其安卡拉