ThinkPHP 5 AJAX跨域请求头设置实现过程解析

Bambi ·
更新时间:2024-09-20
· 893 次阅读

最近用thinkphp做项目,在测试环境时,存在接口的测试问题。在tp官网也没能找到相关的解决方法。自已看了一下源码,有如下的解决方案。

在项目目录下面,创建common/behavior/CronRun.php文件,文件内容如下:

<?php /** * Created by PhpStorm. * User: LiuYang * Date: 2017/3/9 * Time: 19:37 */ namespace app\common\behavior; use think\Exception; use think\Response; class CronRun { public function run(&$dispatch){ $host_name = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : "*"; $headers = [ "Access-Control-Allow-Origin" => $host_name, "Access-Control-Allow-Credentials" => 'true', "Access-Control-Allow-Headers" => "x-token,x-uid,x-token-check,x-requested-with,content-type,Host" ]; if($dispatch instanceof Response) { $dispatch->header($headers); } else if($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { $dispatch['type'] = 'response'; $response = new Response('', 200, $headers); $dispatch['response'] = $response; } } }

接着在项目中(tags.php)配置行为动作,如下:

<?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: liu21st <liu21st@gmail.com> // +---------------------------------------------------------------------- // 应用行为扩展定义文件 return [ // 应用初始化 'app_init' => [], // 应用开始 'app_begin' => [ 'app\\common\\behavior\\CronRun' ], // 模块初始化 'module_init' => [], // 操作开始执行 'action_begin' => [], // 视图内容过滤 'view_filter' => [], // 日志写入 'log_write' => [], // 应用结束 'app_end' => [ 'app\\common\\behavior\\CronRun' ], ];

ok,以上几步就解决跨域请求问题。

您可能感兴趣的文章:thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结ThinkPHP5.1+Ajax实现的无刷新分页功能示例ThinkPHP5 通过ajax插入图片并实时显示(完整代码)Thinkphp5框架ajax接口实现方法分析thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解ThinkPHP框架结合Ajax实现用户名校验功能示例thinkPHP利用ajax异步上传图片并显示、删除的示例TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例



ThinkPHP ajax跨域 AJAX

需要 登录 后方可回复, 如果你还没有账号请 注册新账号