filter前端
對於java後端來講,一個http請求過來會先通過filter,進行過濾,在filter下咱們能夠經過session作一些權限管理的過濾,把沒有權限的接口直接放回403,filter也能夠操做請求頭作一些跨域請求以下圖所示:java
filter實現跨域請求spring
相關代碼(我知道確定有人想要這段代碼的):後端
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpServletRequest request = (HttpServletRequest) servletRequest;
// 指定容許其餘域名訪問
response.setHeader("Access-Control-Allow-Origin", "*");
// 響應類型
response.setHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, OPTIONS, DELETE");
// 響應頭設置
response.setHeader("Access-Control-Allow-Headers", "Content-Type, x-requested-with, X-Custom-Header, HaiYi-Access-Token");
//
if ("OPTIONS".equals(request.getMethod())){
response.setStatus(HttpStatus.SC_NO_CONTENT);
}
filterChain.doFilter(servletRequest, servletResponse);
}
複製代碼
另外struct2框架是基於filter開發的跨域
servlet瀏覽器
http請求通過filter的過濾以後若是沒有被攔截就會回掉到doget(),dopost()方法分別對應前端的get,post操做,以下圖所示:bash
注意:由於對於java後端來講get和post沒有任何區別,因此通常把get回調post去設計restful框架,這樣設計的restful框架就能同時能被get和post調用服務器
有一點要注意的是世面上的一些大衆框架springmvc其實只是基於servlet開發的一個多例框架restful
session(cookie)cookie
cookie和session相似於key value的一個map的數據結構,另外注意的是session通常也是key value的形式,瀏覽器第一次請求服務器時,服務器會生成一個sessionId,並返回給瀏覽器,這個sessionId會被保存在瀏覽器的會話cookie中,第二次訪問的時候會把sessionid帶上(也就是cookie).