1. 程式人生 > >什麼是跨域以及解決方法:

什麼是跨域以及解決方法:

#跨域:
# 瀏覽器從一個域名的網頁去請求另一個域名的資源時,瀏覽器處於安全的考慮,不允許不同源的請求
#同源策略:
#  協議相同
#  域名相同
#  埠相同
#處理方法:
# 1.通過JSONP跨域
# JSON是一種資料交換格式
# JSONP是一種非官方的跨域資料互動協議
# jsonp是包含在函式呼叫中的json
# script標籤不受同源策略的影響,手動建立一個script標籤,傳遞URL,同時傳入一個回撥函式的名字
# 伺服器得到名字後,返回資料時會用這個函式名來包裹住資料,客戶端獲取到資料之後,立即把script標籤刪掉
# 2.cors:跨域資源共享
# 使用自定義的HTTP頭部允許瀏覽器和伺服器相互通訊
# 1.如果是簡單請求,直接設定允許訪問的域名:
#   允許你的域名來獲取我的資料                         
#   response['Access-Control-Allow-Origin'] = "*"
# 2.如果是複雜請求,首先會發送options請求做預檢,然後再發送真正的PUT/POST....請求
#   因此如果複雜請求是PUT等請求,則服務端需要設定允許某請求
#   如果複雜請求設定了請求頭,則服務端需要設定允許某請求頭
#簡單請求:
#    一次請求 
#非簡單請求:
#    兩次請求,在傳送資料之前會先發一次請求用於做“預檢”,
#    只有“預檢”通過後才再傳送一次請求用於資料傳輸。

#只要同時滿足以下兩大條件,就屬於簡單請求。                             
# (1) 請求方法是以下三種方法之一:HEAD  GET POST
# (2)HTTP的頭資訊不超出以下幾種欄位:                                     
#   Accept                                     
#   Accept-Language                                     
#   Content-Language
#   Last-Event-ID
#  Content-Type:只限於三個值application/x-www-form-urlencoded、multipart/form-data、 text/plain 
#JSONP和CORS:
#   1.JSONP只能實現GET請求,而CORS支援所有型別的HTTP請求
#   2.jsonp需要client和server端的相互配合
#   3.cors在client端無需設定,server端需要針對不同的請求,來做head頭的處理