tp5.1 php 前后端分离开发 Restful风格 预请求OPTIONS问题 处理

php进行前后端分离开发过程中,当前端使用ajax请求服务器时,如果我们发送的参数为json格式的话,往往会发送两次请求第一次为OPTIONS预请求,第二次则为我们自己定义的请求方式GET、POST或者其它。

本文主要讲的是tp5.1内RESTful风格请求的时候为防止预请求OPTIONS报错的route.php内的路由设置

1.请求格式为json

1)前端发送

$.ajax({
      url:"http://www.lh.com/bbb",
      type:"get",
      dataType:"JSON",  
      data:{id:1,abc:12},
      contentType: 'application/json',
      success: function(data){
          alert('asdas'+data);
      },
      error : function(jqXHR) {
        alert('asdsaasdas'+jqXHR.status);
        }
    })

2)后端接收时route.php定义

Route::rule('bbb','index/Ceshi/bbb','GET|OPTIONS');   //请求方式为POST的话,将GET改为POST

 

这主要是因为发送json格式数据的时候,浏览器会将数据定义为不是简单的请求参数。

 

2.请求格式为jsonp

如果将请求参数的json格式设置为jsonp格式的话,则不会发送OPTIONS预请求。但是使用jsonp格式进行请求的时候,无论ajax内设置的请求方法是什么,在服务器接收的过程中都会将这些请求方法默认为GET请求。

1)前端发送

$.ajax({
      url:"http://www.lh.com/bbb",
      type:"get",   // 无论这里是什么请求方式
      dataType:"jsonp",  
      data:{id:1,abc:12},
      contentType: 'application/json',
      success: function(data){
          alert('asdas'+data);
      },
      error : function(jqXHR) {
        alert('asdsaasdas'+jqXHR.status);
        }
    })

2)后端接收时route.php定义

Route::rule('bbb','index/Ceshi/bbb','GET');   // 无论前端的请求方式是post还是get,都要设置成get

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值