涓婁竴绡?.SpirngBoot鐢ㄦ埛鐧诲綍鎷︽埅鍣ㄥ垰鎵嶈浜嗘嫤鎴櫒鏄敤鏉ユ嫤鎴敤鎴风櫥褰曠姸鎬佺殑锛屾湰鏂囬『渚夸娇鐢ㄦ嫤鎴湇鍔″櫒澶勭悊璺ㄥ煙闂銆傛湰绯诲垪搴旇涓嶄細閬囧埌璺ㄥ煙闂锛屼絾鏄湪鏃ュ父宸ヤ綔涓紝杩樻槸瑕佸鐞嗕竴涓柊椤圭洰鍜屽墠绔皬浼欎即鑱斿悎璋冭瘯鏃剁殑璺ㄥ煙闂銆傛湰鏂囧氨涓€璧风畝鍗曠湅涓€涓嬨€傚彲浠ュ緢蹇В鍐炽€備粈涔堟槸璺ㄥ煙CORS锛屽叏绉版槸Cross-OriginResourceSharing锛屾剰鎬濇槸璺ㄥ煙璧勬簮鍏变韩銆傚綋涓€涓祫婧愯闂彟涓€涓笉鍚屽煙鍚嶇殑璧勬簮鎴栬€呭悓涓€涓煙鍚嶇殑涓嶅悓绔彛鏃讹紝灏变細鍙戝嚭璺ㄥ煙璇锋眰銆傚鏋滄鏃跺彟涓€涓祫婧愪笉鍏佽瀹冭闂法鍩熻祫婧愶紝閭d箞璁块棶灏变細閬囧埌璺ㄥ煙闂銆傝法鍩熸槸鎸囩敱浜庢祻瑙堝櫒瀹夊叏闄愬埗锛屼笉鍏佽涓嶅悓鍓嶇椤甸潰璁块棶鍗忚銆佷笉鍚屽煙鍚嶃€佷笉鍚岀鍙e彿鐨刪ttp鎺ュ彛銆傛瘮濡傛垜鍦ㄦ湰鍦板垱寤轰竴涓猦tml锛屽湪閲岄潰鍐欎竴涓猘jax璇锋眰锛岃闂垜鏈嶅姟鍣ㄦ彁渚涚殑SpringBoot搴旂敤銆傛帴鍙o細192.168.1.11:8080/getUser灏嗘姤鍛婅姹傜殑璧勬簮涓婁笉瀛樺湪鈥淎ccess-Control-Allow-Origin鈥濇爣澶淬€傞敊璇€係pringBoot濡備綍瑙e喅璺ㄥ煙闂鍦╯pringboot涓紝瑙e喅璺ㄥ煙闂鐨勬柟娉曟湁寰堝绉嶃€備緥濡傦紝@CrossOrigin娉ㄩ噴鍙互娣诲姞鍒扮被鎴栨柟娉曚腑銆傚彟涓€涓槸鍏ㄥ眬閰嶇疆銆傚叏灞€閰嶇疆闇€瑕佹坊鍔犺嚜瀹氫箟绫诲疄鐜癢ebMvcConfigurer鎺ュ彛锛岀劧鍚庡湪鎺ュ彛涓疄鐜癮ddCorsMappings鏂规硶銆俛ddMapping锛氳〃绀鸿法鍩熷鐞嗙殑璇锋眰璺緞鐨勬牸寮忋€俛llowedHeaders锛氳〃绀哄厑璁哥殑璇锋眰澶达紝榛樿鍏佽鎵€鏈夌殑璇锋眰澶淬€俛llowedMethods锛氳〃绀哄厑璁哥殑璇锋眰鏂规硶锛岄粯璁や负GET銆丳OST鍜孒EAD銆傝繖閲岀殑閰嶇疆鏄?琛ㄧず鏀寔鎵€鏈夌殑璇锋眰鏂瑰紡銆俶axAge锛氳〃绀烘娴嬭姹傜殑鏈夋晥鏈熴€俛llowedOrigins琛ㄧず鏀寔鐨勫煙銆傝缁嗕唬鐮佸涓?*;importjavax.servlet.annotation.WebFilter;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;/***璺ㄥ煙鎷︽埅銆?*@authorlaughXiaofeng*@date2022-07-2119:23:08*@sinceJDK1.8*/@WebFilter(filterName="corsFilter",urlPatterns="/*")@Order(0)publicclassCorsFilter瀹炵幇杩囨护鍣▄privatestaticfinalStringHEADER_ORIGIN="Origin";privatestaticfinalStringMETHOD_OPTIONS="OPTIONS";@OverridepublicvoiddoFilter(ServletRequestreq,ServletResponseres,FilterChainchain)throwsIOException,ServletException{finalHttpServletRequestrequest=(HttpServletRequest)req;}鏈€缁堢殑HttpServletResponse鍝嶅簲=(HttpServletResponse)璧勬簮锛涘鏋?request.getHeader(HEADER_ORIGIN)!=null){response.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN,request.getHeader(HEADER_ORIGIN));}response.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS,"true");//濡傛灉鍏佽鎵€鏈夎姹傛柟寮忥紝浣跨敤*response.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS,"GET,POST,PUT,DELETE,OPTIONS");response.setHeader(HttpHeaders.ACCESS_CONTROL_MAX_AGE梅,"3600");//濡傛灉鍏佽鎵€鏈夋爣澶达紝鐢?response.setHeader(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS,"Authorization,Content-Type,Accept,X-Requested-With,remember-me");response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS,"Content-Disposition");濡傛灉(METHOD_OPTIONS.equalsIgnoreCase(request.getMethod())){response.setStatus(HttpServletResponse.SC_OK);杩斿洖;}chain.doFilter(req,res);}}鍏充簬灏忓皬椋庰煉曟湰绔犲埌姝ょ粨鏉燂紝鍠滄鐨勬湅鍙嬪叧娉ㄦ垜.com/hack-feng/maple-demo
