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 相关文章推荐
从Web查询数据库之PHP与MySQL篇
Sep 25 PHP
php date与gmdate的获取日期的区别
Feb 08 PHP
php getimagesize 上传图片的长度和宽度检测代码
May 15 PHP
探讨捕获php错误信息方法的详解
Jun 09 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
PHP合并discuz用户脚本的方法
Aug 04 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
Jun 22 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
Sep 12 PHP
discuz论坛更换域名,详细文件修改步骤
Dec 09 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的error_reporting错误级别变量对照表
2014/07/08 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
跟老齐学Python之用while来循环
2014/10/02 Python
Python标准库内置函数complex介绍
2014/11/25 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
mac使用python识别图形验证码功能
2020/01/10 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
《自然之道》教学反思
2014/02/11 职场文书
学校评语大全
2014/05/06 职场文书
班风口号
2014/06/18 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
八年级上册语文教学计划
2015/01/22 职场文书
个人工作能力自我评价
2015/03/05 职场文书
不同意离婚答辩状
2015/05/22 职场文书
一篇文章告诉你如何实现Vue前端分页和后端分页
2022/02/18 Vue.js