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直接跨域訪問,服務端添加支持,對以前的代碼無影響。
缺點: