題目1: 什么是同源策略。
瀏覽器出于安全方面的考慮,只允許與本域下的接口交互。不同源的客戶端腳本
在沒有明確授權的情況下,不能讀寫對方的資源。
本域指的是?
(1) 同協議: 如都是http或者https
(2) 同域名: 如都是http://jirengu.com/a
和http://jirengu.com/b
(3) 同端口: 如都是80端口
題目2: 什么是跨域?跨域有幾種實現形式。
當前頁面發送了一條ajax請求。當前頁面的url和請求頁面的url不處于同域或者同源,這就是跨域。就會被瀏覽器阻止掉。請求是有的,但是沒有響應。這是瀏覽器的一種保護機制。
第二種跨域的方式。
瀏覽器是不允許操作不同源的iframe 里面的內容的。
我們可以在我們自己的頁面上寫js,操作我們自己頁面上的元素,但是無法去操作iframe里面的,它所加載的其他元素。遵守同源策略就是可以操作的,如果不同源,那么它就無法操作。
題目3: JSONP 的原理是什么
html中script標簽可以引入其他域下的js,比如引入線上的jQuery庫,利用這個
特性,可實現跨域訪問接口,需要后端支持。
echo $cb . '&&' . $cb . '{' . json_encode($ret) . ')'
1、定義數據處理函數_fun
2、創建script標簽,src的地址執行后端接口,最后加個參數callback=_fun
3、服務端在收到請求后,解析參數,計算返還數據,輸出fun(data) 字符串
4、fun(data)會放到script標簽做為js執行,此時會調用fun函數,將data作為參數
題目4: CORS是什么。
CORS 全稱是跨域資源共享(Cross-Origin Resource Sharing),是一種ajax
跨域請求資源的方式,支持現代瀏覽器,IE支持10以上。實現方式很簡單,當你使用XMLHttpRequest 發送請求時,瀏覽器發現該請求不符合同源策略,會給該請求加一個請求頭: Origin, 后臺進行一系列處理,如果確定接受請求則在返回結果中加入一個響應頭: Access-Control-Allow-Origin; 瀏覽器判斷該相應頭中是否包含Origin的值,如果有則瀏覽器會處理響應,我們就可以拿到響應數據,如果不包含瀏覽器直接駁回,這時我們無法拿到響應數據,所以CORS的表象是讓你覺得它與同源的ajax請求沒啥區別,代碼完全一樣。