欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

5種處理js跨域問題方法匯總

 更新時間:2014年12月04日 08:52:20   投稿:hebedich  
本文匯總了解決js跨域問題的5種方法,除了最后一種使用flash解決跨域問題由于過于高端,沒有做出介紹外,其余四種都做了下總結(jié),這里推薦給有相同需求的小伙伴。

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

最近再整理了一下:

1.jsonp。

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

2.iframe跨域。

   頁面中增加一個iframe元素,在需要調(diào)用get請求的時候,將iframe的src設(shè)置為get請求的url即可發(fā)起get請求的調(diào)用。

復(fù)制代碼 代碼如下:

iframe方式強(qiáng)于jsonp,除了可以處理http請求,還能夠跨域?qū)崿F(xiàn)js調(diào)用。

3.script元素的src屬性處理

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

復(fù)制代碼 代碼如下:

4.在服務(wù)器使用get處理。

   對于業(yè)務(wù)上沒有硬性要求在前端處理的,可以在服務(wù)端做一次封裝,再服務(wù)端發(fā)起調(diào)用,這樣就可以解決跨域的問題。然后再根據(jù)請求是發(fā)出就完,還是需要獲取返回值,來決定代碼使用同步或者異步模式。

復(fù)制代碼 代碼如下:

        private static void CreateGetHttpResponse(string url, int? timeout, string userAgent, CookieCollection cookies)
        {
            if (string.IsNullOrEmpty(url))
            {
                throw 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);//異步
            //return request.GetResponse() as HttpWebResponse;
        }

5.flash跨域

過于尖端了==,再研究

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

相關(guān)文章

最新評論