1. 程式人生 > >angular+springboot前後端分離無法獲取返回response頭中的Authorization

angular+springboot前後端分離無法獲取返回response頭中的Authorization

問題描述:專案前後端分離時,因為使用到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;
 }              
}