ajax跨域方法

nginx url rewrite

在服務器端安裝nginx服務,將H5前端的訪問路徑和java後端的訪問路徑放在一個域名下,由nginx根據url請求路徑進行轉發:

http://aaa.afubx.com/afbx-wap  ==afbx-wap

http://aaa.afubx.com/afbx-rest  ==>  afbx-rest

 

Nginx配置:

server {

        listen 80;

        server_name aaa.afubx.com;

 

        index index.html index.htm;

        location /afbx-rest {

                #proxy_redirect          off;

                proxy_set_header        Host            $host;

                proxy_set_header        X-Real-IP       $remote_addr;

                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

                proxy_pass http://192.168.0.202:18081;

        }

 

        location /afbx-wap/afbx-wap {

                index index.php index.html index.htm;

                rewrite  "/afbx-wap/(.*)" /$1;

        }   

           

 

        location /afbx-wap {

                #proxy_redirect          off;

                proxy_set_header        Host            $host;

                proxy_set_header        X-Real-IP       $remote_addr;

                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

                proxy_pass http://192.168.0.202:18083;

        }

}  

 

優點:通過同一域訪問,不存在跨域問題。

缺點:需要安裝配置nginx,並且存在nginx單點壓力的隱患。

 

 

 

 

跨域資源共享CROS

服務端根據http請求頭的Origin字段進行判斷,設置允許訪問的域名訪問。

解決方法:

服務端攔截請求,通過HttpServletRequest.getHeader(“Origin”)進行判斷,如果是白名單就設置HttpServletResponse.setHeader(“Access-Control-Allow-Origin”,”{來源域名}”);

Java代碼:

List whiteList = new ArrayList();

whiteList.add(“”);

String filterDrive = “wap”;

HttpServletResponse res = (HttpServletResponse) message.get(AbstractHTTPDestination.HTTP_RESPONSE);

HttpServletRequest req = (HttpServletRequest) message.get(AbstractHTTPDestination.HTTP_REQUEST);

If(filterDrive.equas(req.getParameter(“drive”))){

String origin = req.getHeader("Origin");

If(whiteList.contains(origin)){

res.setHeader("Access-Control-Allow-Origin", origin);

}

}

優點:使用ajax直接跨域訪問,服務端添加支持,對以前的代碼無影響。

缺點:

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章