讲师中心 微信公众号
AI工具推荐 视频效率加速

Yii2.0.50 API跨域CORS配置【前后端分离】

秋瑶同学_7009

秋瑶同学_7009

发布时间:2026-08-06 22:40:33

|

993人浏览过

|

来源于php中文网

原创

Yii2.0.50中配置API跨域需三步:一是在web/index.php入口添加全局CORS响应头;二是为REST控制器配置yii\filters\Cors行为;三是重写beforeAction支持OPTIONS预检请求。

yii2.0.50 api跨域cors配置【前后端分离】

在Yii2.0.50中为前后端分离项目配置API跨域(CORS),核心是让后端接口响应中包含正确的Access-Control-Allow-*头部,使前端Vue/React应用能从localhost:8080等非同源地址安全调用localhost:8000的API。不配置会导致浏览器拦截请求并报错“has been blocked by CORS policy”。

修改入口文件web/index.php添加全局CORS头

打开web/index.php,在require __DIR__ . '/../vendor/autoload.php';之后、(new yii\web\Application($config))->run();之前插入以下代码:

header('Access-Control-Allow-Origin: http://localhost:8080');

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');

这一步必须放在Application实例化之前,否则headers会被Yii内部响应对象覆盖。若前端部署在其他域名(如https://admin.example.com),请将Origin值同步替换,【Origin值不可写成*配合Credentials:true】,否则浏览器会直接拒绝响应。

为RESTful API模块单独配置CORS行为

若项目已启用yii\rest\ActiveController或自定义REST模块,推荐在控制器类中声明behaviors:

在控制器(如controllers/Api/V1/UserController.php)的behaviors()方法内添加:

方法一:使用yii\filters\Cors过滤器

'cors' => [

  'class' => \yii\filters\Cors::className(),

  'cors' => [

    'Origin' => ['http://localhost:8080'],

    'Access-Control-Request-Method' => ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],

    'Access-Control-Request-Headers' => ['*'],

    'Access-Control-Allow-Credentials' => true,

  ],

],

该配置会自动处理预检(OPTIONS)请求,无需额外路由映射。注意:若同时在web/index.php和控制器中设置CORS,以控制器为准,避免重复响应头冲突。

Yii Framework 2.0.51
Yii Framework 2.0.51

Yii Framework 2.0.51 官方 Basic 应用模板,适合旧项目兼容、升级验证和开发测试。

下载

处理预检OPTIONS请求的终极方案

当遇到复杂请求(如带Authorization头或Content-Type为application/json)时,浏览器会先发OPTIONS请求。Yii2默认不响应OPTIONS,需显式支持:

第一步:在config/web.php的components中注册URL规则

'urlManager' => [

  'enablePrettyUrl' => true,

  'showScriptName' => false,

  'rules' => [

    ['pattern' => '<controller:>/<action:>', 'route' => '<controller>/<action>'],</action></controller></action:></controller:>

    ['pattern' => 'api/<module:>/<controller:>', 'route' => 'api/<module>/<controller>'],</controller></module></controller:></module:>

  ],

],

第二步:在对应控制器(如controllers/ApiController.php)中重写beforeAction()

public function beforeAction($action)

{

  if ($this->request->getMethod() === 'OPTIONS') {

    return true;

  }

  return parent::beforeAction($action);

}

第三步:确保控制器继承yii\rest\Controller而非yii\web\Controller,否则OPTIONS响应体为空,浏览器仍会报错。

热门AI工具

更多
Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2303

2023.08.11

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

6030

2024.03.19

后端的主要工作内容介绍
后端的主要工作内容介绍

后端是应用程序的服务端部分,负责核心任务,如数据库交互、业务逻辑处理和响应客户端请求。想了解更多后端的相关内容,可以阅读本专题下面的文章。

5386

2024.03.19

PHP API接口开发与RESTful实践
PHP API接口开发与RESTful实践

本专题聚焦 PHP在API接口开发中的应用,系统讲解 RESTful 架构设计原则、路由处理、请求参数解析、JSON数据返回、身份验证(Token/JWT)、跨域处理以及接口调试与异常处理。通过实战案例(如用户管理系统、商品信息接口服务),帮助开发者掌握 PHP构建高效、可维护的RESTful API服务能力。

524

2025.11.26

PHP Yii框架专题
PHP Yii框架专题

本专题专注于PHP主流框架Yii的应用,系统讲解MVC架构、路由机制、数据库操作、表单处理、安全验证与RESTful API 开发等核心内容。通过电商网站、后台管理系统与内容管理平台等实战项目,帮助学员快速掌握Yii框架的开发技巧与实战经验。

2930

2025.09.04

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

80

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

80

2026.09.30

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

40

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii Framework 2.0 API 官方文档
Yii Framework 2.0 API 官方文档

共0课时 | 0人学习

Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn