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入门学习知识点五 关于php数组的几个基本操作
Jul 14 PHP
PHP中数组定义的几种方法
Sep 01 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 PHP
phpstorm编辑器乱码问题解决
Dec 01 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
深入解析PHP的Laravel框架中的event事件操作
Mar 21 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
在Laravel 中实现是否关注的示例
Oct 22 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 curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
vue之父子组件间通信实例讲解(props、$ref、$emit)
2018/05/22 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
python 算法 排序实现快速排序
2012/06/05 Python
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
python3中bytes和string之间的互相转换
2017/02/09 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
基于python中theano库的线性回归
2018/08/31 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
python实现两个文件夹的同步
2019/08/29 Python
Python语言异常处理测试过程解析
2020/01/08 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
如何写一个自定义标签
2012/12/28 面试题
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
文史专业毕业生自荐信
2013/11/17 职场文书
初三家长会邀请函
2014/01/18 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL