麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

SpringMvc+AngularJS通過CORS實現跨域方案

2019-11-14 23:31:32
字體:
來源:轉載
供稿:網友
SPRingMvc+AngularJS通過CORS實現跨域方案

什么是跨域請求問題?

這個問題的起因在于現代瀏覽器默認都會基于安全原因而阻止跨域的Ajax請求,這是現代瀏覽器中必備的功能,但是往往給開發(fā)帶來不便。

但跨域的需求卻一直都在,為了跨域,勤勞勇敢的程序猿們想出了許許多多的方法,例如,jsonP、代理文件等等。但這些做法增加了許多不必要的維護成本,而且應用場景也有許多限制,例如jsonP并非XHR,所以jsonP只能使用GET傳遞參數。

在移動應用風生水起的如今,托HTML5的福,Mobile Web,甚至Hybird App也逐漸火起來,在本地文件系統的Web頁面,也有需要獲取外部數據的需求,而這些需求也必然是跨域的。同時,HTML5也來帶了叫“Cross-Origin Resource Sharing”的新特性,來賦予開發(fā)者權力決定資源是否允許被跨域訪問。

如何解決?CORS,CrossOrigin Resources Sharing,也即跨源資源共享,是 HTML5 的一項特性,它定義了一種瀏覽器和服務器交互的方式來確定是否允許跨域請求。

通過服務器增加一個特殊的Header[access-Control-Allow-Origin]來告知客戶端跨域的限制,如果瀏覽器支持CORS的話,如果判斷Origin通過的話,就會允許XHR進行請求,而不需要再使用jsonP或者代理文件。

使用這個Header返回被允許請求跨域請求的來源域,例如網站duelist.cn設置了下面的HeaderAccess-Control-Allow-Origin: http://smdcn.net這樣設置之后,通過http://smdcn.net下的頁面對于duelist.cn進行ajax請求就會被允許,而其他網站對duelist.cn依舊會被阻攔,通過這種方式網站擁有者可以自己對此進行限制。

當然,如果不想限制來源,可以通過Access-Control-Allow-Origin: *來允許任何站點對該資源進行跨域請求

在SpringMVC下的解決方案:

定義SimpleCORSFilter

import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Component;@Componentpublic class SimpleCORSFilter implements Filter {    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {        HttpServletResponse response = (HttpServletResponse) res;        response.setHeader("Access-Control-Allow-Origin", "*");        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");        response.setHeader("Access-Control-Max-Age", "3600");        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");        chain.doFilter(req, res);    }    public void init(FilterConfig filterConfig) {}    public void destroy() {}}

web.xml:

    <filter>      <filter-name>cors</filter-name>      <filter-class>com.app.filter.SimpleCORSFilter</filter-class>    </filter>    <filter-mapping>      <filter-name>cors</filter-name>      <url-pattern>/*</url-pattern>    </filter-mapping>

angularjs端代碼:

        $http({            method: "post",            url: "http://localhost:8080/eifs/usr/login.json",            data: {para1:"para1",para2:"para2"},            headers: {                'Content-Type': 'application/x-www-form-urlencoded'            }        }).success(function (data) {        }).error(function (data) {        });       $http.get('http://localhost:8080/eifs/usr/login.json', {params:{para1:"para1",para2:"para2"},timeout: 10000})        .success(function (data, status, headers, config) {                    }).error(function (data, status, headers, config) {                    });

參考:

spring guide:https://spring.io/guides/gs/rest-service-cors/


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 九九精品在线观看视频 | 激情影院在线观看 | 天天夜夜草 | 少妇一级淫片免费放播放 | 色淫网站免费视频 | 国产日韩在线 | 亚洲第一成人在线 | 一级毛片在线免费观看视频 | 午夜视频中文字幕 | 中文字幕在线永久视频 | 禁漫天堂久久久久久久久久 | 免费黄色在线观看网站 | 免费一级在线观看 | 免费一区二区三区 | 天天曰夜夜操 | 在线观看国产网站 | 91在线免费观看 | 亚洲一级片在线观看 | 一级免费黄视频 | 国产一区二区三区撒尿在线 | 中文字幕欧美日韩 | 51色视频| 中文字幕免费看 | 49vv看片免费 | 免费一级在线观看 | 日本一区二区在线看 | 九色新网址 | 国产毛片毛片毛片 | 日韩高清电影 | 久久国产不卡 | 国产午夜亚洲精品午夜鲁丝片 | 国产精品久久久久久久久久 | 国产精品成人av片免费看最爱 | 久草在线最新 | 国产一级一区二区三区 | 欧美zoofilia杂交videos | 亚欧在线免费观看 | 日韩视频不卡 | 国产妞干网 | 在线 日本 制服 中文 欧美 | 一级网站 |