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 相关文章推荐
Uncaught exception com_exception with message Failed to create COM object
Jan 11 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
解析PHP提交后跳转
Jun 23 PHP
php生成静态页面的简单示例
Apr 17 PHP
用PHP代码在网页上生成图片
Jul 01 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
php与c 实现按行读取文件实例代码
Jan 03 PHP
PHP实现的简单适配器模式示例
Jun 22 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
php实现mysql连接池效果实现代码
Jan 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
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
jquery实现页面虚拟键盘特效
2015/08/08 Javascript
浅析nodejs实现Websocket的数据接收与发送
2015/11/19 NodeJs
js实现简单的验证码
2015/12/25 Javascript
微信小程序学习(4)-系统配置app.json详解
2017/01/12 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
py中的目录与文件判别代码
2008/07/16 Python
一个简单的python程序实例(通讯录)
2013/11/29 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
用python实现对比两张图片的不同
2018/02/05 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
HTML5样式控制示例代码
2013/11/27 HTML / CSS
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
思想汇报范文
2013/11/04 职场文书
企业内部培训方案
2014/02/04 职场文书
房地产开盘策划方案
2014/02/10 职场文书
老师对学生的寄语
2014/04/09 职场文书
演讲稿格式范文
2014/05/19 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书
承诺书范本大全
2015/05/04 职场文书
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android