前端跨域解決方案 ·跨域是瀏覽器為了安全而做出的限制策略 ·瀏覽器請求必須遵循同源策略:同域名、同端口、同協議 1:cros跨域 這種方法是在服務端解決 php解決案例: //方式一: header("Access-Control-Allow-Origin: *");//允許所有地址跨域請求 //方式二: header("Access-Control-Allow-Origin: http://localhost:8080");//指定某個地址可以跨域請求,這里只能指定一個 //方式三:如果要允許多個地址跨域請求可以這樣寫 $origin = ['http://localhost:8080','http://localhost:8081']; $AllowOrigin = 'http://localhost:8080'; if(in_array($_SERVER["HTTP_ORIGIN"],$origin)) { $AllowOrigin = $_SERVER["HTTP_ORIGIN"]; } header("Access-Control-Allow-Origin: ".$AllowOrigin ); 2:jsonp 這種方法需要前端后端都進行設置 ajax請求受同源策略影響,不允許進行跨域請求,而script標簽src屬性中的鏈接卻可以訪問跨域的js腳本, 利用這個特性,服務端不再返回JSON格式的數據,而是返回一段調用某個函數的js代碼,這樣實現了跨域。 具體前端實現: <script src="http://www.fengxiangqu.com/file/wd-js/jquery-1.11.1.min.js"></script> <script> $.ajax({ type : "get", url : "https://order.imooc.com/pay/cartorder", dataType : "jsonp", jsonp: "callback",//傳遞給請求處理程序或頁面的,用以獲得jsonp回調函數名的參數名(默認為:callback) jsonpCallback:"jsonpcallback",//自定義的jsonp回調函數名稱,默認為jQuery自動生成的隨機函數名 success : function(json){ console.log(json); }, error:function(){ } }); </script> 后端實現: <?php $data = "......."; $callback = 'jsonpcallback'; echo $callback.'('.json_encode($data).')'; exit; ?> 3:nginx代理轉發