JavaScript中的跨域問題

接下來要講的是 JavaScript中的跨域 這個奇葩的問題,很多人在面試的時候也是被聞到自閉的問題。我會從下面三個方面去講

1.什麼是跨域?

跨域:跨域是指從一個域名的網頁去請求另一個域名的資源。比如:從 www.baidu.com 這個域名去訪問 www.taobao.com這個域名下數據,正常請求的情況下是失敗的,失敗的原因就是就 跨域請求了,它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript施加的安全限制。
跨域的嚴格一點的定義是:只要 協議,域名,端口有任何一個的不同,就被當作是跨域

2.什麼是同源策略?

同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,所謂同源是指,域名,協議,端口相同

如果非同源(域名,協議,端口只要有其中一個不相同就是非同源),那麼在請求數據時,瀏覽器會在控制檯中報一個異常,提示拒絕訪問。

  • 非同源受到的限制
    • cookie不能讀取 (如我在自己的站點無法讀取博客園用戶的cookie)
    • dom無法獲得
    • ajax請求不能發送

3.爲什麼要跨域請求數據

既然有安全問題,那爲什麼又要跨域呢? 有時公司內部有多個不同的子域,比如一個是A域 ,而應用是放在B域 , 這時想從 B域去訪問 A域的資源就屬於跨域。

4.解決跨域的方法

(1)跨域資源共享(CORS)

(2)通過jsonp跨域

(3)nginx代理跨域

(4)nodejs中間件代理跨域

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章