vue中axios訪問Java后端跨域問題解決


問題背景:

  前后端分離,前端選用Vue,后端選用Java,vue編譯出的靜態頁面采用ngix發布,在前端訪問后端時出現跨域問題。

解決方法:

  跨域的問題解決方法有好多種,這里是通過服務端解決,以下是代碼實現。

 1 public class AllowOriginFilter implements Filter {
 2 
 3     @SuppressWarnings("unused")
 4     public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
 5 
 6         HttpServletResponse response = (HttpServletResponse) res;
 7         HttpServletRequest request=(HttpServletRequest)req;
 8         response.setHeader("Access-Control-Allow-Origin", "*"); // 設置允許所有跨域訪問  9         response.setHeader("Access-Control-Allow-Methods", "POST,GET,PUT,OPTIONS,DELETE");
10         response.setHeader("Access-Control-Max-Age", "3600");
11         response.setHeader("Access-Control-Allow-Headers", "Origin,X-Requested-With,Content-Type,Accept,Authorization,token");
12         response.setHeader("Access-Control-Allow-Credentials", "true");
13         chain.doFilter(req,res);
14     }
15 
16     public void init(FilterConfig filterConfig) {}
17 
18     public void destroy() {}
19 
20 
21 }

導致跨域問題的情況:

 
URL地址 解釋說明 是否允許通信

http://www.a.com/a.js

http://www.a.com/b.js

同一域名 允許

http://www.a.com/a/a.js

http://www.a.com/b/b.js

同一域名,不同文件夾 允許

http://www.a.com/a.js

http://www.a.com:8080/b.js

同一域名,不同端口 不允許

http://www.a.com/a.js

https://www.a.com/b.js

同一域名,不同協議;

一個是http,另一個是https 

不允許

http://www.a.com/a.js

https://www.10.0.1.100.com/b.js

一個域名,一個域名對應的IP 不允許

http://www.a.com/a.js

https://www.sub.a.com/b.js

同一主域名,二級域名不同 不允許

http://www.a.com/a.js

http://www.b.com/b.js

兩個不同的域名  不允許
     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM