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简介
Oct 09 PHP
php图片验证码代码
Mar 27 PHP
解决MySQL中文输出变成问号的问题
Jun 05 PHP
关于IIS php调用com组件的权限问题
Jan 11 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 PHP
php实现的SESSION类
Dec 02 PHP
浅谈thinkphp的实例化模型
Jan 04 PHP
thinkphp如何获取客户端IP
Nov 03 PHP
ThinkPHP路由机制简介
Mar 23 PHP
php实现统计二进制中1的个数算法示例
Jan 23 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+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
Array对象方法参考
2006/10/03 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
javascript常用的方法分享
2015/07/01 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
Python中用Spark模块的使用教程
2015/04/13 Python
python实现大文件分割与合并
2019/07/22 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
大学生的自我鉴定范文
2014/01/21 职场文书
《童趣》教学反思
2014/02/19 职场文书
幼儿园评语大全
2014/04/17 职场文书
大学生心理活动总结
2014/07/04 职场文书
民主生活会发言材料
2014/10/20 职场文书
销售督导岗位职责
2015/04/10 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL