js 跨域訪問問題解決方法
什麼引起了ajax不能跨域請求的問題?
ajax本身實際上是通過xmlhttprequest物件來進行資料的互動,而瀏覽器出於安全考慮,不允許js**進行跨域操作,所以會警告。
有什麼完美的解決方案麼?
解決方案有不少,但是只能是根據自己的實際情況來選擇。
跨域的安全限制都是指瀏覽器端來說的,伺服器端是不存在跨域安全限制的。所以針對這2種情況衍生出2類跨域解決方案,一類是
伺服器端做
中轉類似**方式,一類是js處理瀏覽器端的真正跨域訪問。
具體情況有:
1) 本域和子域的相互訪問: www.aa.com和book.aa.com 用document.domain = "aa.com";
2) 本域和其他域的相互訪問: www.aa.com和www.bb.com 用 xmlhttprequest訪問**,既伺服器端**方式
3) 本域和其他域的相互訪問: www.aa.com和www.bb.com 用 js建立動態指令碼,
是一致的(qq空間就是大量採用這種方式來實現跨域資料交換的) .jsonp是一種指令碼注入(script injection)行為,所以也有一定的安全隱患.
注意,jquey是不支援post方式跨域的.
雖然採用post +動態生成iframe是可以達到post跨域的目的(有位js牛人就是這樣把jquery1.2.5 打patch的),但這樣做是乙個比較極端的方式,不建議採用.
也可以說get方式的跨域是合法的,post方式從安全角度上,被認為是不合法的, 萬不得已還是不要劍走偏鋒..
瀏覽器端跨域訪問的需求看來也引起w3c的注意了,看資料說html5 websocket標準支援跨域的資料交換,應該也是乙個將來可選的跨域資料交換的解決方案.
jQuery 跨域訪問問題解決方法
瀏覽器端跨域訪問一直是個問題,多數研發人員對待js的態度都是好了傷疤忘了疼,所以病發的時候,時不時地都要疼上一疼.記得很久以前使用iframe 加script domain 宣告,yahoo js util 的方式解決二級網域名稱跨域訪問的問題.時間過得好快,又被拉回js戰場時,跨域問題這個傷疤又開...
WMI遠端訪問問題解決方法
wmi 全稱為 microsoft windows management instrumentation wmi 按微軟的介紹大致如下 通過wmi訪問遠端計算機需要注意幾點 1。首先確保使用的使用者名稱和密碼正確,且使用者有管理員許可權。使用者的密碼不能為空。2。檢查目標機上dcom是否可用。檢查登...
js跨域訪問問題
最近在搞paas系統,paas ui微服務服務和後台微服務的聯調,想要在ui的js中直接使用ip位址的方式 ip port url 獲取後台資料。發現報錯。後來上網看問題是瀏覽器由於安全方面的考慮,禁止這種跨域訪問。其實ajax已經從跨域將伺服器資料取回,但瀏覽器禁止了該資料的使用。所以要將瀏覽器的...