URL | 說明 | 是否允許通訊 | |
---|---|---|---|
www.a.com/a.js | www.a.com/b.js | 同一域名下 | 允許 |
www.a.com/lab/a.js | www.a.com/script/b.js | 同一域名下不同資料夾 | 允許 |
www.a.com:8000/a.js | www.a.com/b.js | 同一域名,不同埠 | 不允許 |
www.a.com/a.js | www.a.com/b.js | 同一域名,不同協議 | 不允許 |
www.a.com/a.js | 70.32.92.74/b.js | 域名和域名對應ip | 不允許 |
www.a.com/a.js | script.a.com/b.js | 主域相同,子域不同 | 不允許 |
www.a.com/a.js | a.com/b.js | 同一域名,不同二級域名(同上) | 不允許(cookie這種情況下也不允許訪問) |
www.cnblogs.com/a.js | www.a.com/b.js | 不同域名 | 不允許 |
特別注意兩點:
- 如果是協議和埠造成的跨域問題“前臺”是無能為力的,
- 在跨域問題上,域僅僅是通過“URL的首部”來識別而不會去嘗試判斷相同的ip地址對應著兩個域或兩個域是否在同一個ip上。
“URL的首部”指window.location.protocol +window.location.host,也可以理解為“Domains, protocols and ports must match”。
比較常見的解決方案
- 方式一:使用ajax的jsonp
- 方式二:使用jQuery的jsonp外掛
- 方式三:使用cors
- 方式四:配置nginx
本作品採用《CC 協議》,轉載必須註明作者和本文連結