您好,登錄后才能下訂單哦!
同一個url,使用普通的http請求和使用Ajax請求時,在請求頭里有一個字段不同。
Ajax請求
普通http請求
可見如果 Ajax請求,請求頭中多了一個字段X-Requested-With:XMLHttpRequest
通過這個字段阻止跨域請求。
JSONP是一種跨域交換協議,具體介紹網上很多,這里記錄一個例子
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Untitled Page</title> <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function(){ $.ajax({ type: "get", async: false, url: "http://localhost/jquery-autocomplete/demo/json.php", dataType: "jsonp", jsonp: "callback",//傳遞給請求處理程序或頁面的,用以獲得jsonp回調函數名的參數名(一般默認為:callback) jsonpCallback:"flightHandler",//自定義的jsonp回調函數名稱,默認為jQuery自動生成的隨機函數名,也可以寫"?",jQuery會自動為你處理數據 success: function(result){ alert(result.employees.length); }, error: function(){ alert('fail'); } }); }); </script> </head> <body> </body> </html>
后端json.php
<?php $callback=$_GET['callback']; $result = "{\"employees\": [ { \"firstName\":\"Bill\" , \"lastName\":\"Gates\" }, { \"firstName\":\"George\" , \"lastName\":\"Bush\" } ] }"; echo $callback."($result)"; ?>
瀏覽器請求http://localhost/jquery-autocomplete/demo/json.php?callback=flightHandler
返回的數據為
flightHandler({"employees": [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName":"Carter" } ] })
瀏覽器端彈出alert提示,跨域請求成功。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。