CORS 요청에서 angularjs $ http를 사용하면 my success 함수 authenticateSuccess (data, status, headers)가 잘못된 헤더를 얻을 때 문제가 발생합니다. 우리가 알고 있듯이 모든 CORS 요청은 angularjs에서 두 번 발생합니다. 서버에서 두 번 응답합니다. 처음에는 유효성 검사 정보가 필요하고 두 번째 응답은 필요하지만 내 성공 함수는 첫 번째 응답에서 헤더를 가져옵니다. 그러나 데이터는 두 번째 응답에서 온 것입니다.
function login(credentials) {
var data = {
username: credentials.username,
password: credentials.password,
rememberMe: credentials.rememberMe
};
console.log(data);
return $http.post('//localhost:8080/api/authenticate', data).success(authenticateSuccess);
function authenticateSuccess(data, status, headers) {
console.log(headers());
console.log(data);
var bearerToken = headers('Authorization');
if (angular.isDefined(bearerToken) && bearerToken.slice(0, 7) === 'Bearer ') {
var jwt = bearerToken.slice(7, bearerToken.length);
service.storeAuthenticationToken(jwt, credentials.rememberMe);
return jwt;
}
}
}
'$ http''.success' 처리기는 더 이상 사용되지 않습니다. 대신'.then'을 사용하십시오. https://docs.angularjs.org/api/ng/service/$http#deprecation-notice – Phil
예, 저는 이것을 사용하여 변경했습니다. 하지만 같은 문제가 생기면 머리글은 첫 번째 응답에서 가져온 것이고 데이터는 두 번째 응답에서 가져온 것입니다. –