同源策略
要理解跨域,就要了解“同源策略”妓灌。所謂同源是指拙吉,協(xié)議,域名胧辽,端口號相同。所謂“同源策略“,簡單來說就是基于安全考慮疫衩,當(dāng)前域不允許調(diào)用其他域的內(nèi)容。
跨域
注意:localhost
和 127.0.0.1
雖然都指向本機(jī)荣德,但也屬于跨域闷煤。
解決方法
JSONP
<img>
的src
(獲取圖片),<link>
的href
(獲取 css)涮瞻,<script>
的src
(獲取 javascript)這三個(gè)都不符合同源策略鲤拿,它們可以跨域獲取數(shù)據(jù)。JSONP 就是利用<script>
的src
來實(shí)現(xiàn)跨域獲取數(shù)據(jù)的署咽。注意 JSONP 只支持GET
請求近顷,不支持POST
請求生音。代理
例如www.beijing.com/index.html
需要調(diào)用www.shanghai.com/server.php
,可以寫一個(gè)接口www.beijing.com/server.php
窒升,由這個(gè)接口在后端去調(diào)用www.shanghai.com/server.php
并拿到返回值缀遍,然后再返回給 index.html,這就是一個(gè)代理的模式饱须。相當(dāng)于繞過了瀏覽器端域醇,自然就不存在跨域問題。XHR2
在服務(wù)器端做一些小小的改造即可:
header('Access-Control-Allow-Origin:*'); //允許所有來源訪問
header('Access-Control-Allow-Method:POST,GET'); //允許訪問的方式WebSocket
WebSocket 是一種通信協(xié)議蓉媳,使用ws://
(非加密)和wss://
(加密)作為協(xié)議前綴譬挚。該協(xié)議不實(shí)行同源政策,只要服務(wù)器支持酪呻,就可以通過它進(jìn)行跨源通信减宣。CORS
CORS 是跨源資源分享(Cross-Origin Resource Sharing)的縮寫。它是 W3C 標(biāo)準(zhǔn)玩荠,跨源 AJAX 請求的根本解決方法漆腌。相比 JSONP 只能發(fā)GET
請求,CORS 允許任何類型的請求姨蟋。
參考鏈接: