首頁 > web前端 > js教程 > 5種處理js跨域問題方法彙總_javascript技巧

5種處理js跨域問題方法彙總_javascript技巧

WBOY
發布: 2016-05-16 16:29:16
原創
1486 人瀏覽過

前兩天碰到一個跨域問題的處理,使用jsonp可以解決。 (http://www.jb51.net/article/57889.htm

最近再整理了一下:

1.jsonp。

   ajax請求,dataType為jsonp。這種形式需要請求在服務端調整為傳回callback([json-object])的形式。如果服務端回傳的是普通json物件。那麼調試的時候,在chrome瀏覽器的控制台會報"Uncaught SyntaxError: Unexpected token"錯誤;在firefox瀏覽器的控制台會報"SyntaxError: missing ; before statement"錯誤。

2.iframe跨域。

   頁面中增加一個iframe元素,在需要呼叫get請求的時候,將iframe的src設定為get請求的url即可發起get請求的呼叫。

複製程式碼 程式碼如下:

var url = "http://xxx.xxx.xxx?p1=1&p2=2";
$("#iframe").attr("src", url);//跨域,使用iframe

iframe方式強於jsonp,除了可以處理http請求,還能夠跨域實作js呼叫。

3.script元素的src屬性處理

   iframe、img、style、script等元素的src屬性可以直接向不同域請求資源,jsonp正是利用script標籤跨域請求資源的簡單實現,所以這個和jsonp本質一樣,同樣需要服務端請求返回callback...形式。

複製程式碼 程式碼如下:

var url="http://xxx.xxx.xxx?p1=1";
var script = document.createElement('script');
script.setAttribute('src', url);
document.getElementsByTagName('head')[0].appendChild(script);

4.在伺服器使用get處理。

   對於業務上沒有硬性要求在前端處理的,可以在服務端做一次封裝,再服務端發起調用,這樣就可以解決跨域的問題。然後再根據請求是發出就完,還是需要取得回傳值,來決定程式碼使用同步或非同步模式。

複製程式碼 程式碼如下:

        private static void CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollection cookies)
        {
            if (string.IsNullOrEmpty(url))
            {
                拋出 new ArgumentNullException("url");
            }
            var request = WebRequest.Create(url) as HttpWebRequest;
            request.Method = "GET";
            if (!string.IsNullOrEmpty(userAgent))
            {
                request.UserAgent = userAgent;
            }
            if (timeout.HasValue)
            {
                request.Timeout = timeout.Value;
            }
            if (cookies!= null)
            {
                request.CookieContainer = new CookieContainer();
                request.CookieContainer.Add(cookies);
            }
            request.BeginGetResponse(null,null);//非同步
            //回傳 request.GetResponse() as HttpWebResponse;
        }

5.flash跨域

尖端尖端了==,再研究

總結:以上5種方法就是常見的解決js跨域問題的處理方法了,最後一種比較高端,等我研究清楚了再補上吧。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板