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 相关文章推荐
Session的工作方式
Oct 09 PHP
easyui的tabs update正确用法分享
Mar 21 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
Mar 02 PHP
Laravel 5框架学习之环境与配置
Apr 08 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
ThinkPHP使用Smarty第三方插件方法小结
Mar 19 PHP
yii2简单使用less代替css示例
Mar 10 PHP
PHP更安全的密码加密机制Bcrypt详解
Jun 18 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 PHP
Yii2框架加载css和js文件的方法分析
May 25 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 学习资料零碎东西
2010/12/04 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
PHP性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
PHP 8新特性简介
2020/08/18 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
2011/04/12 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
jQuery下拉美化搜索表单效果代码分享
2015/08/25 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
详解javascript appendChild()的完整功能
2018/08/18 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
详解Python中的strftime()方法的使用
2015/05/22 Python
python Flask实现restful api service
2017/12/04 Python
Python爬虫之正则表达式基本用法实例分析
2018/08/08 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
银行优秀员工事迹
2014/02/06 职场文书
低碳生活倡议书
2014/04/14 职场文书
保护水资源的标语
2014/06/17 职场文书
普通话宣传标语
2014/06/26 职场文书
信用卡工作证明模板
2014/09/14 职场文书
银行授权委托书样本
2014/10/13 职场文书
2014年终个人总结报告
2015/03/09 职场文书
步步惊心观后感
2015/06/12 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
windows系统安装配置nginx环境
2022/06/28 Servers