angular+springboot前後端分離無法獲取返回response頭中的Authorization
阿新 • • 發佈:2019-02-04
問題描述:專案前後端分離時,因為使用到jwt需要將jwt設定到Authorization中,頁面也可以顯示Authorization。但是angular無法獲取到。
解決辦法:
後臺伺服器解決跨域的地方新增設定:
config.addExposedHeader("Authorization");
後臺完整程式碼:
// cors跨域資源共享過濾器 @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = applicationProperties.getCors(); log.info(config.getAllowedOrigins().get(0)); /* * if (config.getAllowedOrigins() != null && * !config.getAllowedOrigins().isEmpty()) { * log.debug("Registering CORS filter"); * source.registerCorsConfiguration("/api/**", config); * source.registerCorsConfiguration("/v2/api-docs", config); } */ config.addExposedHeader("Authorization"); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); }
前臺程式碼:
return $http({method:'POST', withCredentials:true, //執行攜帶cookie url:'http://*******:8080/login4', data: data}).success(authenticateSuccess); function authenticateSuccess (data, status, headers) { var bearerToken = headers('Authorization'); if (bearerToken!=null&&angular.isDefined(bearerToken) && bearerToken.slice(0, 7) === 'Bearer ') { var jwt = bearerToken.slice(7, bearerToken.length); service.storeAuthenticationToken(jwt,data.data.trueName); return jwt; } }