JavaScript跨域的原因是:瀏覽器同源策略限制,目前網域的js只能讀取同域下的視窗屬性,所以產生跨域。同源策略就是瀏覽器為了確保使用者資訊的安全,防止惡意的網站竊取數據,禁止不同網域之間的JS進行互動。
本教學操作環境:windows10系統、javascript1.8.5版、Dell G3電腦。
跨域問題是瀏覽器同源策略限制,目前網域的js只能讀取同域下的視窗屬性。
出於瀏覽器的同源策略限制。同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說Web是建構在同源策略基礎上的。瀏覽器只是針對同源策略的一種實作。同源策略會阻止一個網域的javascript腳本和另一個網域的內容進行互動。所謂同源(即指在同一個網域)就是兩個頁面具有相同的協定(protocol),主機(host)和連接埠號碼(port)。
簡單來講同源策略就是瀏覽器為了確保使用者資訊的安全,防止惡意的網站竊取數據,禁止不同網域之間的JS進行互動。對於瀏覽器而言只要網域名稱、協定、連接埠其中一個不同就會引發同源策略,從而限制他們之間如下的互動行為:
1.Cookie、LocalStorage和IndexDB無法讀取;
2.DOM無法取得;
3.AJAX請求不能發送。
跨域的嚴格一點的定義是:只要協議,域名,端口有任何一個的不同,就被當作是跨域。
跨域的解決方案
JSONP:需要在請求方法裡加上dataType:“jsonp”, //資料格式設定為jsonp,jsonp:“callback” , //Jquery產生驗證參數的名稱
1、dataType,此參數必須設定為jsonp
2、jsonp,該參數的值需要與伺服器端約定
nginx反向代理
webpack 配置反向代理:直接使用腳手架的devServer去配置反向代理 來解決開發過程中的跨域問題
跨域資源共享(CORS)
nodejs跨域:在本地用nodejs起一個伺服器 透過那個伺服器去呼叫後台的伺服器回傳資料後再回傳給前端 伺服器之間不存在跨網域
WebSocket協定跨網域
透過JSONP
自己理解:JSONP就是使用script標籤的src屬性來實作跨域,只能使用get請求,後台會回傳給你一個方法,你透過這個方法取得你想要的資料
jsonp原理 前端定義好方法透過src屬性傳給後端 後端拿到方法後傳入資料拼接方法後傳給前端 前端當成方法來呼叫
#JSONP主要是封裝好的請求方式添加callback,這個callback是由前後端約定好的
相關推薦:javascript學習教學
以上是javascript跨域的原因是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!