extjs 跨域請求前后台


首先簡單了解下什么是跨域:

跨域,指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對javascript施加的安全限制。

所謂同源是指,域名,協議,端口均相同,不明白沒關系,舉個栗子:

http://www.666.com/index.html 調用 http://www.666.com/server.php (非跨域)

http://www.666.com/index.html 調用 http://www.777.com/server.php (主域名不同:666/777,跨域)

http://abc.666.com/index.html 調用 http://def.666.com/server.php (子域名不同:abc/def,跨域)

http://www.666.com:8080/index.html 調用 http://www.666.com:8081/server.php (端口不同:8080/8081,跨域)

http://www.666.com/index.html 調用 https://www.666.com/server.php (協議不同:http/https,跨域)

請注意:localhost和127.0.0.1雖然都指向本機,但也屬於跨域。

瀏覽器執行javascript腳本時,會檢查這個腳本屬於哪個頁面,如果不是同源頁面,就不會被執行。

 

大致了解后廢話少數,直接上代碼;

extjs 前端代碼:

    //跨域請求修改數據
        $.ajax({
            type : "POST",
            url : 'http://10.18.66.66:8080/SK/updateUnitProjectMonthPlanStatus.do',
            traditional : true,//規定是否使用傳統的方式淺層進行序列化(參數序列化)
            data : {
                'MONTH_PLAN_ID_' : monthPlan.MONTH_PLAN_ID_
            },
            xhrFields : {
                withCredentials : true
            },
            success : function(data) {
                if (data.success) {
                    //alert("解除工程預算,成功!");
                }
            },
            error : function() {
                Ext.MessageBox.alert('誒,跨域失敗了,服務器大哥那邊不肯。', data.message, Ext.MessageBox.ERROR);
            }
        });

JAVA后端

     response.addHeader("P3P", "CP=CAO PSA OUR");// 使用P3P協議自動更改IE瀏覽器安全級別
        // 獲取請求方地址request.getHeader("Origin")
        // 設置允許跨域
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
        // 是否允許后續請求攜帶認證信息(cookies),該值只能是true,否則不返回
        response.setHeader("Access-Control-Allow-Credentials", "true");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM