国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - spring boot配合前端實現跨域請求訪問

spring boot配合前端實現跨域請求訪問

2020-09-09 12:57hanghangde Java教程

本篇文章主要介紹了spring boot配合前端實現跨域請求訪問,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一.方法:

  1. 服務端設置Respone Header頭中Access-Control-Allow-Origin
  2. 配合前臺使用jsonp
  3. 繼承WebMvcConfigurerAdapter 添加配置類

二.實例:

1.前端:因為我們用了前后端分離,前端用node服務器,node服務器再用了ajax反向代理請求到我的spring boot 服務器。其中node服務器也用了ajax發出請求所以也存在跨域的問題。具體代碼:

?
1
2
3
4
5
6
app.all(apiRoot + '/*', proxy('127.0.0.1:' + proxyPort, {
 forwardPath: function(req, res) {
  console.log('req: ', req, 'res; ', res);
  return require('url').parse(req.url).path;
 }
}));

后臺(用的是spring boot 1.3.7.RELEASE) :用了一個filter進行了身份驗證同時進行了跨域處理,具體代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
public class AuthFilter implements Filter {
  //  @Autowired
  //這個不能自動注入servlet和filter是被tomcat管理的
  private BaseUserService baseUserService;
  private String[] excludePaths;
 
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
    System.out.println("initFilter");
    //不能在初始化中通過Appliaction Context獲取因為這時候還沒初始化Application Context
    //baseUserService = SpringUtils.getBean("baseUserService", BaseUserService.class);
    excludePaths = new String[]{"/api/user/noLogin", "/api/user/tokenError", "/api/user/loginForeground",
        "/api/user/loginBackground", "/api/user/inCorrectUserId"};
  }
 
  @Override
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpServletRequest = (HttpServletRequest) request;
    HttpServletResponse httpServletResponse = (HttpServletResponse) response;
    //這里填寫你允許進行跨域的主機ip
    httpServletResponse.setHeader("Access-Control-Allow-Origin", "*");
    //允許的訪問方法
    httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE, PATCH");
    //Access-Control-Max-Age 用于 CORS 相關配置的緩存
    httpServletResponse.setHeader("Access-Control-Max-Age", "3600");
    httpServletResponse.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    String userId = request.getParameter("userId");
    String token = request.getParameter("token");
    //有token的                           `
    if (userId != null && token != null) {
      try {
        Integer id = Integer.parseInt(userId);
        if (baseUserService == null)
          baseUserService = SpringUtils.getBean("baseUserService", BaseUserService.class);
        int status = baseUserService.checkLogin(id, token);
        if (status == 1) {
          chain.doFilter(request, response);
        } else if (status == 0) {
          httpServletResponse.sendRedirect("/api/user/tokenError");
        } else if (status == -2) {
          httpServletResponse.sendRedirect("/api/user/inCorrectUserId");
        } else {
          httpServletResponse.sendRedirect("/api/user/noLogin");
        }
      } catch (NumberFormatException exception) {
        httpServletResponse.sendRedirect("/api/user/inCorrectUserId");
      }
    } else {
      String path = httpServletRequest.getServletPath();
      if (excludePath(path)) {
        chain.doFilter(request, response);
      } else {
        httpServletRequest.getRequestDispatcher("/api/user/noLogin").forward(request, response);
      }
    }
//    ((HttpServletResponse) response).addHeader("Access-Control-Allow-Origin", "*");
//    CorsFilter corsFilter=new CorsFilter();
 
  }
 
  private boolean excludePath(String path) {
    for (int i = 0; i < excludePaths.length; i++) {
      if (path.equals(excludePaths[i]))
        return true;
    }
    return false;
  }
 
  @Override
  public void destroy() {
    System.out.println("destroy method");
  }
 
}

這種方法還適用于servlet中,特別注意的是一定要在filter動作之前加上這句話,也就是在代碼的最前面加上這個話。

跨域資源共享 CORS 詳解(相關鏈接)

2.詳細請看(點開)
3.具體代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package edu.ecnu.yjsy.conf;
 
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
 
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {
 
  @Override
  public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
        .allowedOrigins("*")
        .allowCredentials(true)
        .allowedMethods("GET", "POST", "DELETE", "PUT")
        .maxAge(3600);
  }
 
}

這里有個坑spring boot 以前的版本這樣設置可以用但是 我用的1.3.7.RELEASE spring boot 不能用,所以用第二種方式是萬能的

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/hanghangde/article/details/53946366

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩一区二区三区在线观看 | 亚洲成人av | 五月婷婷综合网 | t66y最新地址一地址二69 | 精品一区二区三区中文字幕老牛 | 免费黄网站在线观看 | 精品成人在线视频 | 午夜小视频在线观看 | 黄小视频 | 成人午夜精品一区二区三区 | 久久视频精品 | 久久久精品一区二区 | 自拍偷拍视频网站 | 黄色在线免费看 | 国产欧美日韩免费 | 成人在线欧美 | 欧美日韩精品综合 | 亚洲va欧美va人人爽成人影院 | 精品国产欧美 | 高清精品一区二区 | 成人精品 | 亚洲国产一区在线 | 一级全黄少妇性色生活片免费 | 欧美精品福利 | 久久久亚洲精品中文字幕 | 久久99国产精品 | 久久中文字幕一区二区三区 | 欧美精品v国产精品v日韩精品 | 成人黄色在线观看 | 国产一区二区三区在线观看免费 | 久久久久久久久久久美女 | 91精品国产乱码久久久久久久久 | 99成人| 久久精品xx老女人老配少 | 亚洲小视频网站 | 久久久久久9 | 国产精品美女一区 | 日韩精品在线一区 | 这里只有精品久久 | 国产日韩欧美 | 欧美激情一区二区三区 |