跨域

域名地址的組成:

這裏寫圖片描述
當協議,子域名,主域名,端口號任意一個不同時,都算作不同域。不同域之間資源請求就叫做跨域。
  如果你直接跨域訪問了,瀏覽器將報錯,因爲你沒有訪問權限。javascript出於安全方面考慮,不允許跨域調用其它頁面的對象。a.com域名下的js無法操作b.com域名下的對象。

處理跨域問題:

  • 通過在同域名的web服務器端創建一個代理
    在上海服務器上有一個服務:
    www.shanghai.com/service.php
    在北京服務器上也建一個服務:
    www.beijing.com/proxy.shanghaiservice.php
    前端就可以通過北京這個服務從後端訪問上海那個服務,然後將響應值返回給前端,北京這個服務就是在後端做了一個代理。所以前端訪問了北京這個代理服務就相當於訪問了上海那個服務,但這已經屬於後臺技術。

  • JSONP可用於解決主流瀏覽器get請求的跨域問題
    在www.aaa.com中

<script>
  function jsonp(json){
       alert(json["name"]);
  }
</script>
<script src="http://www.bbb.com/jsonp.js"></script>
//jsonp.js中:
jsonp({"name":"二毛","age":21});
//script標籤可以向不同的域名請求

以上代碼,也就是a域名聲明瞭一個函數,b域名去調用。這種方法主要是藉助了script標籤可以跨域請求的特性。

  • jquery的ajax中本來就支持jsonp的處理方式
    在get請求中:
          dataType:”jsonp”,
          jsonp:”callback”, (添加一個jsonp的屬性,後端要獲取到這個值)
    對應的的後端代碼:
          $jsonp=$_GET[“callback”]; (添加獲取)
          $result=$jsonp.’({“msg”:”未找到”})’;(將原本的數據用括號括起來,前面再加上獲取的jsonp)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章