解決跨域的三種方案


當前端頁面與后台運行在不同的服務器時,就必定會出現跨域這一問題,本篇簡單介紹解決跨域的三種方案,部分代碼截圖如下,僅供參考:
方式一:使用ajax的jsonp

前端代碼:


服務器代碼

使用該方式的缺點:請求方式只能是get請求

方式二:使用jQuery的jsonp插件
插件下載網址:https://github.com/jaubourg/jquery-jsonp
前端代碼

服務器代碼

使用該方式的特點:與方式一相比,請求方式不只局限於get請求,還可以是post請求,但從服務器從獲取的數據依然是jsonp格式

方式三:使用cors
前端代碼

服務器代碼

 

使用該方式的特點:與前兩種方式相比,前端代碼和未處理跨域前一樣,即普通的ajax請求,但服務器代碼添加了一段解決跨域的代碼
    // 設置:Access-Control-Allow-Origin頭,處理Session問題
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("P3P", "CP=CAO PSA OUR");
        if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {
            response.addHeader("Access-Control-Allow-Methods", "POST,GET,TRACE,OPTIONS");
            response.addHeader("Access-Control-Allow-Headers", "Content-Type,Origin,Accept");
            response.addHeader("Access-Control-Max-Age", "120");
        }


cors高級使用:在springmvc中配置攔截器
創建跨域攔截器實現HandlerInterceptor接口,並實現其方法,在請求處理前設置頭信息,並放行

在springmvc的配置文件中配置攔截器,注意攔截的是所有的文件

 


免責聲明!

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



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