scheme://hostname:port
同域 就是schem hostname port 都同樣
跨域 就是這三個裏有一個不同就是跨域
在本身的域名裏請求其餘域的服務器,這個就叫作跨域請求
同源策略:
瀏覽器廠商爲了安全強制添加的一種安全策略,也就是不一樣域之間沒法相互訪問
並非全部的跨域請求都會受到同源策略的限制,只有當瀏覽器認爲這個跨域請求構成安全威脅的時候纔會激活同源策略限制
例子:iframe 能夠加載到其餘域名的資源,可是沒法操做不一樣域的DOM
link:會把資源按照指定格式導入到當前頁,除了連接css其餘的都只能連接本域名內的
script 任何狀況都不受同源策略的限制(同源策略是無視script標籤的),可是會把加載到的內容強制當成腳原本執行
img 任何狀況下都不受同源策略的限制,可是會把加載到的內容強制當成圖片來顯示
jsonp原理:就是利用script標籤不存在域的概念(能夠在本身的網頁中引入任何域名下的js),咱們經過script的src屬性向後臺發送一個請求,而且把一個函數的名字xxxx傳遞給後臺(通常來講都是?callback=xxxx)傳遞給後臺
後臺會把傳遞進來的參數進行解析,獲取到方法名xxxx,而且執行這個方法,把全部須要給你的數據傳遞給xxxx
咱們xxxx中定義的形參data中其實就已經存儲了咱們須要的數據,接下來在作數據解析,數據綁定便可
jsonp返回的數據有固定的格式
方法名+(+json數據+);
json padding ---->往json數據前面填充了一個方法名,因此叫作json-padding 也就是jsonp
注意事項:
一、只能請求接口 (跨域交互有兩種形式:接口形式 頁面通訊形式)
二、只能是http的get方法,get繫有的特色jsonp全有
三、安全性問題,使用jsonp的接口必須是安全係數很是低的接口
四、傳過去的方法名,必須是全局方法
第二種跨域方式:CORS(跨域資源共享)(接口形式的)
使用跨域資源共享必須server端強配合
必須加上響應頭Access-Control-Allow-Origin
這個響應頭有兩個值(*和指定域名)*表明全部的跨域請求我都容許
若是想攜帶coolie的話server必須添加
把Access-Control-Allow-Origin設置爲true
這兩個跨域方法的區別
1 、jsonp不算是ajax,而是cors是ajax
二、發送jsonp請求,server必須嚴格返回jsonp的格式,而cors必須加上指定的響應頭信息
三、jsonp只能是get方法,而cors則是ajax支持的它都支持
四、相比較之下cors比jsonp安全
五、jsonp永遠是異步的,而cors可同步可異步
六、jsonp沒有兼容性,而cors不支持ie6和7
它們的共同點
一、都是跨域請求數據
二、都是接口形式的跨域請求
我的整理
轉載請標明出處