PHP后端收不到跨域请求,本质是浏览器在预检(OPTIONS)阶段拦截或服务端未正确返回CORS响应头;需确保Web服务器处理OPTIONS请求、PHP对所有接口(含OPTIONS)统一设置Access-Control-Allow-*头,并严格校验Origin、匹配Credentials与Headers。
PHP后端收不到跨域请求,通常不是PHP本身“拒绝”,而是浏览器在发请求前就卡在预检(OPTIONS)阶段,或者PHP没正确响应CORS头导致浏览器直接拦截响应。关键得让服务端对OPTIONS请求有响应,并在所有目标接口返回合法的Access-Control-Allow-*头。
OPTIONS预检失败?当请求含Content-Type: application/json、自定义Header或非简单方法(如PATCH),浏览器会先发一个OPTIONS请求探路。如果PHP没处理它,Nginx/Apache可能直接返回405或500,前端就看不到后续请求。
OPTIONS 405 Not Allowed?OPTIONS方法mod_rewrite并允许OPTIONS;Nginx需显式配置location捕获OPTIONS
不能只在业务逻辑里加header(),必须确保所有路径(包括OPTIONS)都触发。最稳妥是统一前置处理:
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
header('Access-Control-Allow-Origin: https://your-frontend.com');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
exit(0);
}
// 所有非OPTIONS请求也必须带这些头(Origin需动态校验)
$origin = $_SERVER['HTTP_ORIGIN'] ?? '';
$allowed_origins = ['https://your-frontend.com', 'http://localhost:3000'];
if (in_array($origin, $allowed_origins)) {
header("Access-Control-Allow-Origin: $origin");
}
header('Acces
s-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
header('Access-Control-Allow-Credentials: true');
Access-Control-Allow-Origin不能设为* + Access-Control-Allow-Credentials: true,否则浏览器报错Access-Control-Allow-Headers必须包含前端实际发送的自定义Header名,比如X-Api-Key
$_POST收不到application/json数据,记得手动解析:$input = json_decode(file_get_contents('php://input'), true);
要,但仅作补充。Web服务器层加头能避免PHP启动开销,但无法做Origin白名单校验等逻辑。常见配置:
location块里加add_header Access-Control-Allow-Origin ...;,但注意add_header不继承,OPTIONS需单独location ~ ^/api/ { ... }
Header set Access-Control-Allow-Origin "https://your-frontend.com"需启用mod_headers,且AllowOverride All才生效header() → 浏览器最终看到的是合并结果(部分头如Set-Cookie会被覆盖)CORS真正难的不是加几行header(),而是OPTIONS路径是否被路由到、Origin是否严格校验、凭证和Header是否成对放开——漏掉任意一环,请求就静默失败。
# php
# js
# 前端
# json
# apache
# nginx
# cookie
# 浏览器
# app
# access
# 后端
# 路由
# 跨域
相关文章:
建站之星图片链接生成指南:自助建站与智能设计教程
视频网站app制作软件,有什么好的视频聊天网站或者软件?
建站之星导航配置指南:自助建站与SEO优化全解析
宁波免费建站如何选择可靠模板与平台?
南京网站制作费用,南京远驱官方网站?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
如何在VPS电脑上快速搭建网站?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
制作销售网站教学视频,销售网站有哪些?
海南网站制作公司有哪些,海口网是哪家的?
微信小程序 input输入框控件详解及实例(多种示例)
如何通过智能用户系统一键生成高效建站方案?
历史网站制作软件,华为如何找回被删除的网站?
Python lxml的etree和ElementTree有什么区别
如何在建站之星网店版论坛获取技术支持?
,购物网站怎么盈利呢?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何用PHP快速搭建CMS系统?
如何批量查询域名的建站时间记录?
建站10G流量真的够用吗?如何应对访问高峰?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
如何在万网开始建站?分步指南解析
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
七夕网站制作视频,七夕大促活动怎么报名?
如何在宝塔面板创建新站点?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
如何在IIS7中新建站点?详细步骤解析
如何选择高性价比服务器搭建个人网站?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
建站之星伪静态规则如何正确配置?
C++如何编写函数模板?(泛型编程入门)
网站制作壁纸教程视频,电脑壁纸网站?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何制作一个表白网站视频,关于勇敢表白的小标题?
小建面朝正北,A点实际方位是否存在偏差?
建站主机默认首页配置指南:核心功能与访问路径优化
建站主机选购指南:核心配置优化与品牌推荐方案
如何通过FTP空间快速搭建安全高效网站?
已有域名能否直接搭建网站?
Python如何创建带属性的XML节点
如何高效配置IIS服务器搭建网站?
建站之星上传入口如何快速找到?
如何快速选择适合个人网站的云服务器配置?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
如何用y主机助手快速搭建网站?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
如何快速上传自定义模板至建站之星?
*请认真填写需求信息,我们会在24小时内与您取得联系。