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自定义函数返回多个值
Nov 26 PHP
谈谈新手如何学习PHP
Dec 14 PHP
php 静态页面中显示动态内容
Aug 14 PHP
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
Oct 09 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
Sep 16 PHP
分享五个PHP7性能优化提升技巧
Dec 07 PHP
PHP共享内存用法实例分析
Feb 12 PHP
thinkPHP5.0框架安装教程
Mar 25 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 PHP
php之可变变量的实例详解
Sep 12 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
MYSQL环境变量设置方法
2007/01/15 PHP
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
jQuery 1.0.2
2006/10/11 Javascript
读jQuery之三(构建选择器)
2011/06/11 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
分享五个有用的jquery小技巧
2015/10/08 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
jQuery增加、删除及修改select option的方法
2016/08/19 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
js和jquery中获取非行间样式
2017/05/05 jQuery
详解JavaScript 事件流
2020/09/02 Javascript
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
Python编程之多态用法实例详解
2015/05/19 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
python3.x实现base64加密和解密
2019/03/28 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
Python socket处理client连接过程解析
2020/03/18 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
任命书范本大全
2014/06/06 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
三好学生事迹材料
2014/12/24 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python