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


Posted in PHP onOctober 28, 2020

最近用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,以上几步就解决跨域请求问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP图片处理类 phpThumb参数用法介绍
Mar 11 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
Jun 13 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
linux下安装php的memcached客户端
Aug 03 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
php正则提取html图片(img)src地址与任意属性的方法
Feb 08 PHP
php生出随机字符串
Jul 06 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
thinkPHP框架中执行事务的方法示例
May 31 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
Oct 24 PHP
PHP7变量处理机制修改
Mar 09 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 #PHP
THINKPHP5分页数据对象处理过程解析
Oct 28 #PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 #PHP
Laravel配合jwt使用的方法实例
Oct 25 #PHP
数据结构之利用PHP实现二分搜索树
Oct 25 #PHP
如何运行/调试你的PHP代码
Oct 23 #PHP
php redis setnx分布式锁简单原理解析
Oct 23 #PHP
You might like
php header Content-Type类型小结
2011/07/03 PHP
PHP数据过滤的方法
2013/10/30 PHP
crontab无法执行php的解决方法
2016/01/25 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
javascript Select标记中options操作方法集合
2008/10/22 Javascript
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
2013/11/28 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
vue 的 solt 子组件过滤过程解析
2019/09/07 Javascript
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
Python 异常处理的实例详解
2017/09/11 Python
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
使用python绘制二维图形示例
2019/11/22 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
经典c++面试题六
2012/01/18 面试题
简历中的自我评价怎么写
2014/01/29 职场文书
纠风工作实施方案
2014/03/15 职场文书
行政办公室岗位职责
2014/03/18 职场文书
垃圾分类的活动方案
2014/08/15 职场文书
工伤事故处理协议书怎么写
2014/10/15 职场文书
长城导游词300字
2015/01/30 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫