1. 程式人生 > >關於Ajax跨域問題解決

關於Ajax跨域問題解決

  今天使用ajax的時候,意外的發現了ajax居然不能跨域,然後找了半天的資料,感覺可以說個所以然來的了,下面是關於

為什麼要禁用ajax跨域的原由,這裡就不再多解釋,,,




  

可能有些小夥伴會看不懂,,,沒關係,我們來看看什麼是同源,其實也就是跨域,,


 

 簡單的來說,域名相同埠不同,就是跨域,也就是不同源,埠相同,域名不相同也是不同源,即是跨域,,

 今天有一個問題困擾了我很久,cookie如果只是域名相同埠不同的情況下,cookie是可以共享的,親自測試過,差不多敢

拍胸膛保證了把,,我們回到原理的話題,


 這裡主要的話就是講解決問題的思路,不會講一些很深入的東西,如果是老牌程式設計師,就繞路把....

 

  最開始,我的想法是通過是ajax的引數,讓ajax支援跨域請求,然後我在網上各種找資料,好像一點辦法沒,,,,最後實在沒

 辦法,我喵了一下關於ajax禁用跨域的文章,豁然開朗,媽耶,ajxa不支援跨域請求json資料,那我把請求偽裝成js行不行??  ?行不行???,

  然後我試了一下,

   

 

 

 很遺憾,還是失敗了,但是我看見了希望的火光,,至少換了個錯誤啊,,,,

我發現數據載入到了,只是不能解析而已,這太簡單了,,



 原因是 js請求只能解析js資料,這個好辦,我把資料變成js不就好了嘛.......

為了測試,我在被請求的系統中寫了個js的檔案,,



又報錯了,,這次說fun沒有發現,,,原因是 ajax把函式載入過來,然後要執行這個函式,我們頁面又沒有,就報錯了,,,,




這不就很簡單了嘛,我們在本地寫一個function fun不就好了嘛,,,

    function fun(data) {
        alert(data.name)
    }

    
    $(function () {

        $.ajax({
            url : "http://localhost:8086/js/data.js",
            // url : "http://localhost:8086/user/token/" + _ticket,
            dataType : "script",
            type : "GET",
            success : function(data){
                if(data.status == 200){
                    var username = data.data.username;
                    var html = username + ",wecome!<a href=\"http://www.taotao.com/user/logout.html\" class=\"link-logout\">[退出]</a>";
                    $("#loginbar").html(html);
                }
            }
        });
    })





然後我們再做測試,這個問題就完美的解決了,,,,是不是很棒...哈哈哈哈




  然後,我發現jquery居然也支援這樣玩,我們來就不講那麼細了,,因為流程相信大家都清除了,,,,下面是我在某個小哥的

 部落格裡偷的,,大家將就看吧,,嘿嘿




然後後臺處理的話就是




還有一種就是說jquer 提供的一種專門解決這種問題的方法,, 我就直接給程式碼了 ,,,



 後臺程式碼的話,跟前面的是一摸一樣的,,,自己看下就行,,就講那麼多啦