關於跨域和如何解決跨域問題的小結


之前使用到JSONP的時候接觸了一下跨域請求的問題,記錄總結一下,以便以后參照。提到跨域,什么是跨域?只要協議、域名、端口有任何一個不同,都被當作是不同的域。

特別注意兩點:

第一:如果是協議和端口造成的跨域問題“前台”是無能為力的。

第二:在跨域問題上,域僅僅是通過“URL的首部”來識別而不會去嘗試判斷相同的ip地址對應着兩個域或兩個域是否在同一個ip上。

  • 前台關於處理跨域的方法

  (一)document.domain+iframe的設置

    (二)動態創建script

  (三)利用iframe和location.hash

    (四)window.name實現的跨域數據傳輸

    (五)使用HTML5 postMessage

    (六)利用flash

    (七)jsonp

    (八)jQuery插件-jquery-jsonp

angularjs關於解決跨域的問題

一、$http.jsonp【實現跨域】

1. 指定callback和回調函數名,函數名為JSON_CALLBACK時,會調用success回調函數,JSON_CALLBACK必須全為大寫。
2. 指定其它回調函數,但必須是定義在window下的全局函數。url中必須加上callback。

二、$http.get【實現跨域】

1. 在服務器端設置允許在其他域名下訪問

response.setHeader("Access-Control-Allow-Origin", "*"); //允許所有域名訪問
response.setHeader("Access-Control-Allow-Origin", "http://www.123.com"); //允許www.123.com訪問

2. AngularJS端使用$http.get()

三、$http.post【實現跨域】

1. 在服務器端設置允許在其他域名下訪問,及響應類型、響應頭設置

response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods","POST");
response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type");

2. AngularJS端使用$http.post(),同時設置請求頭信息

$http.post('http://localhost/ajax/getAllIndustryCategoty.pt',{languageColumn:'name_eu'},{'Content-Type':'application/x-www-form-urlencoded'}).success(function(data){
		$scope.industries = data;
	});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM