JavaScript跨域(1):什麼是跨域,如何跨域
無數次看到:Origin null is not allowed by Access-Control-Allow-Origin , 網路沒有讓你絕望,但是或許會讓你蛋疼,因為你找了半天沒看到一個比較實用的解決方案,亦或者水平不夠,別人寫的東西累贅沒看懂,抑或是。。。
網上看到了一篇文章——跨域資源共享的10中方式,已經放在自己的家裡了O(∩_∩)O~
跨域也是平時專案中比較讓人頭疼的一個玩意兒,上文只是簡要地提出了有哪些跨域方式,這裡呢,將向大家詳細說明,各種使用頻率比較高的跨域方式。
什麼是跨域:
A cross-domain solution (CDS) is a means of information assurance that provides the ability to manually or automatically access or transfer between two or more differing security domains.
上面是從wiki上引用過來的。意思是:解決兩個安全域之間的資訊傳遞,這個就叫做CDS——跨域解決方案。首先解釋下怎麼樣的兩個域之間的資料傳輸需要跨越。
What [什麼是跨域]
JavaScript出於安全方面的考慮,不允許跨域呼叫其他頁面的物件。但在安全限制的同時也給注入iframe或是ajax應用上帶來了不少麻煩。這裡把涉及到跨域的一些問題簡單地整理一下:
首先什麼是跨域,簡單地理解就是因為JavaScript同源策略的限制,a.com 域名下的js無法操作b.com或是c.a.com域名下的物件。更詳細的說明可以看下錶:
URL | 說明 | 是否允許通訊 |
---|---|---|
http://www.a.com/a.js http://www.a.com/b.js |
同一域名下 | 允許 |
http://www.a.com/lab/a.js http://www.a.com/script/b.js |
同一域名下不同資料夾 | 允許 |
http://www.a.com:8000/a.js http://www.a.com/b.js |
同一域名,不同埠 | 不允許 |
http://www.a.com/a.js https://www.a.com/b.js |
同一域名,不同協議 | 不允許 |
http://www.a.com/a.js http://70.32.92.74/b.js |
域名和域名對應ip | 不允許 |
http://www.a.com/a.js http://script.a.com/b.js |
主域相同,子域不同 | 不允許 |
http://www.a.com/a.js http://a.com/b.js |
同一域名,不同二級域名(同上) | 不允許(cookie這種情況下也不允許訪問) |
http://www.cnblogs.com/a.js http://www.a.com/b.js |
不同域名 | 不允許 |
same-origin policy [同源策略]
在客戶端程式語言中,如javascript和ActionScript,同源策略是一個很重要的安全理念,它在保證資料的安全性方面有著重要的意義。同源策略規定跨域之間的指令碼是隔離的,一個域的指令碼不能訪問和操作另外一個域的絕大部分屬性和方法。
那麼什麼叫相同域,什麼叫不同的域呢?當兩個域具有相同的協議(如http), 相同的埠(如80),相同的host(如www.example.org),那麼我們就可以認為它們是相同的域。比如http://www.example.org/和http://www.example.org/sub/是同域,而http://www.example.org, https://www.example.org, http://www.example.org:8080, http://sub.example.org中的任何兩個都將構成跨域。同源策略還應該對一些特殊情況做處理,比如限制file協議下指令碼的訪問許可權。本地的html檔案在瀏覽器中是通過file協議開啟的,如果指令碼能通過file協議訪問到硬碟上其它任意檔案,就會出現安全隱患,目前IE8還有這樣的隱患。
受到同源策略的影響,跨域資源共享就會受到制約。但是隨著人們的實踐和瀏覽器的進步,目前在跨域請求的技巧上,有很多寶貴經驗的沉澱和積累。這裡我把跨域資源共享分成兩種,一種是單向的資料請求,還有一種是雙向的訊息通訊。
How [如何跨域]
你可以看看這個提綱,跨域十法,也可以等等,我會很詳細很具體地告訴你如何跨域~
O(∩_∩)O哈哈~
下一節將給大家細說JSONP方法跨域。
Reference [參考資料]
1.wiki
2.瘋狂小強
3.Rain Man
本文轉自Barret Lee部落格園部落格,原文連結:http://www.cnblogs.com/hustskyking/archive/2013/03/31/CDS-introduce.html,如需轉載請自行聯絡原作者
相關文章
- 什麼是跨域跨域
- 一文搞懂│什麼是跨域?如何解決跨域?跨域
- 什麼是跨域,後端工程師如何處理跨域跨域後端工程師
- 跨域是什麼?跨域請求資源有哪些方法?跨域
- 什麼是跨域請求?跨域
- 什麼是跨域,什麼是同源跨域
- 跨域問題(普通跨域和springsecurity跨域)跨域SpringGse
- JavaScript cookie 跨域JavaScriptCookie跨域
- 跨域跨域
- 跨域資源共享(CORS)是什麼?跨域CORS
- JavaScript-CORS 跨域JavaScriptCORS跨域
- JavaScript—掌握跨域(24)JavaScript跨域
- JavaScript 跨域彙總JavaScript跨域
- 跨域原理以及跨域解決方案跨域
- 介紹什麼是同源和什麼是跨域,以及三種解決跨域問題的路徑跨域
- 什麼是跨域?解決方案有哪些?跨域
- 深入跨域問題(1) - 初識 CORS 跨域資源共享跨域CORS
- HTTP跨域HTTP跨域
- nuxt跨域UX跨域
- 跨域CORS跨域CORS
- CORS跨域CORS跨域
- Vue跨域Vue跨域
- 前端跨域前端跨域
- django 跨域Django跨域
- JavaScript跨域呼叫、JSONPJavaScript跨域JSON
- 跨域訪問是什麼!怎麼解決?跨域
- 跨域共享CORS詳解及Gin配置跨域跨域CORS
- Vue 跨域問題解決辦法 Vue 配置防止跨域 nginx 重定向防止跨域Vue跨域Nginx
- Nginx解決前端跨域問題 CORS跨域配置Nginx前端跨域CORS
- 深入跨域問題(4) – 利用代理解決跨域跨域
- 深入跨域問題(4) - 利用代理解決跨域跨域
- 深入跨域問題(2) - 利用 CORS 解決跨域跨域CORS
- JavaScript之跨域解決方式JavaScript跨域
- JavaScript跨域問題總結JavaScript跨域
- 跨域知多少?跨域
- 跨域之CORS跨域CORS
- 深度解析跨域跨域
- Tomcat跨域Tomcat跨域