關於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 提供的一種專門解決這種問題的方法,, 我就直接給代碼了 ,,,



 后台代碼的話,跟前面的是一摸一樣的,,,自己看下就行,,就講那么多啦


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com