php 前后端分离开发进行跨域请求时ajax发送验证参数token的header头解决方法

php 前后端分离开发进行跨域请求时ajax发送验证参数token的header头解决方法

php前后端分离开发中要实现前后端参数信息交互,必须解决token标识验证问题。

步骤如下:

1.前端ajax发送请求时,要设置一个自定义header头。代码如下:

$.ajax({
url:”http://www.xxx.com/接口方法”,
type:”get”, //请求方式
dataType:”JSON”, //请求参数格式
data:{id:1,abc:12}, //请求参数
beforeSend: function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader(‘Token’, ‘qwertyuuui’); //自定义header头

// XMLHttpRequest.setRequestHeader(自定义header头名称, 参数值);其中参数值可以为json字符串
},
contentType: ‘application/json’,
success: function(data){
alert(‘成功’+data);
},
error : function(jqXHR) {
alert(‘失败’+jqXHR.status);
}
})

2.后端php接收header数据 代码如下:

public funtion 接口方法名称 {
if($_SERVER[‘REQUEST_METHOD’] == ‘OPTIONS’){
// 解决预请求OPTIONS
header(‘Access-Control-Allow-Origin:http://runapi.showdoc.cc’);
header(‘Access-Control-Allow-Headers:Accept,Referer,Host,Keep-Alive,User-Agent,X-Requested-With,Cache-Control,Content-Type,Cookie,Token’);
header(‘Access-Control-Allow-Credentials:true’);
header(‘Access-Control-Allow-Methods:GET,POST,OPTIONS’);
header(‘Access-Control-Max-Age:1728000’);
header(‘Content-Type:text/plain charset=UTF-8’);
header(‘Content-Length: 0’, true);
header(‘status: 200’);
header(‘HTTP/1.0 204 No Content’);
exit;
}else{
// 获取ajax请求header
header(‘Access-Control-Allow-Origin:http://runapi.showdoc.cc’); //允许跨域请求的域名
header(‘Access-Control-Allow-Credentials: true’);
header(“Access-Control-Allow-Methods:GET, POST, PUT,DELETE,POSTIONS”); // 允许跨域请求的方式
header(“Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Connection, User-Agent, Cookie,Token“); // 将前端自定义的header头名称写入,红色部分
}

//获取自定义Token的值 以tp5.1接收方式为例。

$token = Request::header(‘Token‘);

dump($token);

}

注:

1.当token发送成功时,F12浏览器在NetWork下的文件中header内会有Token。如下图所示

php 前后端分离开发进行跨域请求时ajax发送验证参数token的header头解决方法

2.自定义的header头的请求参数可以自己设置,若为数组或者对象,请转化为json字符串

转载作品,原作者:,文章来源:https://blog.csdn.net/pyp_demon/article/details/84166502

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年2月18日 15:37
下一篇 2022年2月20日 14:43

相关推荐

  • FinClip一个可以让任何APP都能具备小程序运行能力的前端容器技术

    FinClip,一个可以让任何APP都能具备小程序运行能力的前端容器技术,只需简单集成 FinClip SDK ,即可在 iPhone、Android、Windows、Linux、macOS、统信、麒麟等平台下的应用中运行你的小程序,这意味着,移动端、PC 端、车载设备、智能电视、智能手表都能运行小程序了。

    2022年9月12日
    0950
  • 海关对接 订单申报 php xml加签

    海关对接订单申报 php xml加签,海关申报有进口申报和出口申报等,根据你的业务类型决定需要对接报文,具体可以咨询客服,本文是以进口订单申报来介绍报文加签申报的过程。

    Php 2022年4月25日
    02512
  • AI智能助手
  • 用python写一个自动关机程序,并打包成exe可执行程序

    用python写一个自动关机程序,并打包成exe可执行程序

    2022年1月10日
    0690
  • PHPStorm和ThinkPHP 的使用

    PHPStorm和ThinkPHP 的使用,thinkPHP完全开发手册,安装ThinkPHP框架

    Php 2022年4月21日
    04690
  • php redis 扩展类常用操作

    php redis 扩展类常用操作(1)一、连接 redis 服务 try { $redis = new Redis(); $redis->connect(‘127.0.0.…

    Php 2022年1月3日
    01120
  • 使用PHP处理RabbitMQ消息队列的应用

    使用PHP处理RabbitMQ消息队列的应用,消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。

    2024年9月5日
    0100

发表回复

登录后才能评论
分享本页
返回顶部