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抓取https的内容的代码
Apr 06 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 PHP
thinkphp在模型中自动完成session赋值示例代码
Sep 09 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
php 中奖概率算法实现代码
Jan 25 PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 PHP
yii2学习教程之5种内置行为类详解
Aug 03 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
PHP7内核之Reference详解
Mar 14 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 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分页显示制作详细讲解
2006/10/09 PHP
探讨PHP调用时间格式的参数详解
2013/06/06 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
Node.js 路由的实现方法
2019/06/05 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
python如何统计代码运行的时长
2019/07/24 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
python怎么调用自己的函数
2020/07/01 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
First Aid Beauty官网:FAB急救面霜
2018/05/24 全球购物
AJAX的全称是什么
2012/11/06 面试题
体育口号大全
2014/06/18 职场文书
学生检讨书怎么写
2014/10/09 职场文书
化验室岗位职责
2015/02/14 职场文书
2015年护士节慰问信
2015/03/23 职场文书
python opencv旋转图片的使用方法
2021/06/04 Python