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