1. 程式人生 > >相對URL:協議名跨域的一種處理方式

相對URL:協議名跨域的一種處理方式

  • 問題現象

  當頁面地址協議與頁面內請求地址協議不一致(不都是https或不都是http)時,往往請求會被攔截。控制檯提示:

  

  • 原因

  瀏覽器對於JavaScript的同源策略的限制,簡言之就是我們常說的跨域。

  • 處理

  處理跨域的方式有很多,對於前端而言,JSONP是不錯的選擇。但現階段,大多數第三方平臺會同時提供https和http兩種協議下的可訪問資源地址,尤其是CDN資源,那麼處理這種這種跨域的簡單方法來了:相對URL。相對URL使用更加模糊的語法,如:

   1 <script src='//xxx.cdn.net/xxx.js'></script>

 

  在這裡,資源地址不新增協議名,在這種情況下,src將使用當前瀏覽器位址列中的協議名。在HTTPS頁面上,這將是對CDN的HTTPS請求,在HTTP頁面上,它將是HTTP請求。這樣就可以解決大多數的CDN資源問題。