問題1:同源策略的核心是什麼?答:腳本(也就是js)不能操做和查看不一樣域的資源。html
問題2:爲何頁面中的超連接能跳轉到其餘網站的頁面?答:請牢記,同源限制的是js,超連接,圖片,等經過src屬性請求到的不受影響。前端
問題3:能在具體說說到底限制什麼嗎?答:能,主要限制兩個操做,1,限制js操做不一樣域中html的DOM,也就是說,你網易域名下的js不能讀取和修改百度域名下的頁面節點。2 限制xmlhttprequest訪問不一樣源的資源,xmlhttprequest是什麼?請求資源的對象, ajax就是封裝了這個對象,而後你就能快樂的請求後臺了。ajax
問題4:如何實現跨域?答:實現跨域方式有不少,好比問題2中已回答,超連接或者圖片中的src不受影響,因此能夠把腳本寫到src中,沒見過誰用。主流cors方式,跨域資源請求。 如何實現呢?瀏覽器自帶實現,若是你只寫前端什麼都不用作,直接寫你請求的地址就好了。只須要在服務端設置:容許跨域請求。src實現跨域的方法是jsonp。原理是js調用src屬性,而後接收參數。雖然正常編程不多有人用,但黑客卻能用這個漏洞威脅網站安全。後臺防範也很簡單,由於jsonp方式只能是get請求,因此接口限制post就能防護。編程
5,form表單方式一樣不會受到跨域影響,無論是get,仍是post方式。用ajax方式提交,跨域會受到攔截,控制檯會給出提示,不過這個限制,只是限制了返回數據的讀取操做,並非限制發送請求。也就是說,跨域post一個數據的添加(後臺並未容許跨域),後臺正常會執行新增方法,只是返回的success結果js不能讀取。即,帶有修改數據功能的接口(新增,修改,刪除)(post,或者get方式),系統的跨域的限制並不能保障安全。json
6,上述的 ajax,get,post提交不能限制跨域的請求。但 delete 和put方式會被攔截。這兩個方法不多有人用,幾乎都是post走天下,全部的功能由接口決定。不用請求方式區分是修改,刪除,查詢。因此只用同源策略作到安全不現實。跨域
7,瀏覽器能夠直接設置成容許跨域訪問,各瀏覽器設置方式不一樣。瀏覽器