當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot跨域请求
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot跨域请求
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在軟件開發過程中,尤其是現在的前后端分離開發,跨域請求是很普通的事情,我這個只是簡單的將所有的跨域請求都接受,如若有大佬有更好的解決方案歡迎分享
問題:
在請求的時候,前端使用js進行ajax請求未能接收到預期的數據,卻得到了一個跨域請求的報錯。
解決辦法
項目是使用SpringBoot構建的,在項目中添加一個過濾器AjaxFilter,使用這個過濾器對所有的請求進行處理。
主要是添加請求頭
代碼
AjaxFilter 訪問請求過濾器
package com.chen.dataserver.filter;import org.slf4j.Logger; import org.slf4j.LoggerFactory;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.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** Created by handsome programmer.* User: chen* Date: 2018/5/27* Time: 17:36* Description: 跨域攔截器,解決跨域問題3*/ @WebFilter(filterName = "ajaxFilter", urlPatterns = {"/*"}) public class AjaxFilter implements Filter {private static Logger logger = LoggerFactory.getLogger(AjaxFilter.class);@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletResponse response = (HttpServletResponse) servletResponse;HttpServletRequest request = (HttpServletRequest) servletRequest;String requestURI = request.getRequestURI();logger.info("過濾到的請求--->" + requestURI);// 指定允許其他域名訪問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");filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {} }在項目啟動的入口類上面即Application上面添加@ServletComponentScan注解。
測試代碼
<!DOCTYPE html> <html lang="zh" ng-app="myApp"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta charset="UTF-8"><script type="text/javascript">// 創建XMLHttpRequest對象var xmlHttpRequest;if (window.XMLHttpRequest) {// IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執行代碼xmlHttpRequest = new XMLHttpRequest();} else {// IE6, IE5 瀏覽器執行代碼xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}xmlHttpRequest.open("GET", "http://localhost:8080/pc/getRecordsFromStaticNode", true);xmlHttpRequest.send();xmlHttpRequest.onreadystatechange = function () {if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {console.log(xmlHttpRequest.responseText);}}</script> </head> <body> </body> </html>解決跨域問題后的請求
總結
以上是生活随笔為你收集整理的SpringBoot跨域请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 稀疏矩阵的运算
- 下一篇: Java笔记——Java代码块的执行顺序