解決ajax跨域問題

一、什麼是跨域?

是兩個不一樣的域互相請求,這個稱之爲跨域。
具體哪些算是跨域以下所示:ajax

clipboard.png

那麼爲何須要解決跨域問題?
因爲瀏覽器的同源策略的限制,必需要求ajax請求爲同一域。
什麼是同源呢??json

同源策略(Same originpolicy)是一種約定,它是瀏覽器最核心也最基本的安全功能,若是缺乏了同源策略,則瀏覽器的正常功能可能都會受到影響。能夠說Web是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現
所謂同源是指,域名,協議,端口相同。跨域

二、模擬跨域請求

clipboard.png

跨域的體現:瀏覽器

clipboard.png

三、跨域問題的解決【重點&難點】

如今是經過一個技術「jsonp技術」。
問:jsonp和json是什麼關係?
答:這2者沒有一毛錢關係。Jsonp非官方協議主要是用於解決跨域問題,json是一個數據傳輸的格式。安全

3.一、前輩是如何解決跨域問題服務器

clipboard.png

上述的方法就是如今jsonp的原型。
3.二、目前主流的跨域問題的解決方法
3.2.一、XHR2解決跨域問題
XHR2:XMLHttpRequest Level2
核心:在被請求的文件中添加一個header頭。
缺點:在IE10如下的瀏覽器不支持。jsonp

clipboard.png

可是:這個解決方案是符合W3C標準的,也是其提倡的解決方案,這個方法在移動端也是支持的。spa

3.2.二、代理方式
核心:代理3d

clipboard.png

讓ajax請求本地服務器 服務器處理請求問題代理

3.2.三、jQuery中的ajax方法
例如:$.get方法、$.getJSON方法
Get方法:
clipboard.png

要求1:請求指望返回數據類型必須是jsonp;
要求2:必須在請求地址上帶一個參數名;

clipboard.png

GetJSON方法:
該方法和get方法基本一致,只是在發送請求的時候略有差別

clipboard.png

要求1:參數callback後面的「=?」不能省略,必需要寫;要求2:和get方法不同,jsonp做爲指望的返回數據類型,能夠不寫;

相關文章
相關標籤/搜索