크로스 오리진에서 302, 403 에러

안녕하세요.
Angular4 Typescript로 카카오 로그인 기능과 사용자 정보 획득 기능을 구현하고 있습니다.
그런데 리스폰스 헤더에서 현재 위치의 엑세스 컨트롤 허용을 해주지 않아
리다이렉트가 되지 않는 문제, 수신한 액세스 토근과 리프레쉬 토근에 접근할 수 없는 문제가 발생하고 있습니다.
따라서 사용자 정보도 얻을 수가 없습니다.
두 경우의 코드는 아래와 같습니다.
-------- 로그인 윈도우 얻기 -------------
if (connection.request.url.endsWith(’/api/kauth/code’) && connection.request.method === RequestMethod.Get) {
// set the parameters to get authorize code
let client_id = ‘11319540bcebc4842a185362c3143574’;
let redirect_uri = ‘http://164.125.34.165:8080/api/kauth/login’;
let response_type = ‘code’;
let url = ‘https://kauth.kakao.com/oauth/authorize?client_id=’ + client_id + ‘&redirect_uri=’ + redirect_uri + ‘&response_type=’ + response_type;

            let headers = new Headers({
                'Access-Control-Allow-Credentials': 'true',
                'Access-Control-Allow-Origin': '*'
            });

            let realHttp = new Http(realBackend, options);
            let requestOptions = new RequestOptions({
                method: connection.request.method,
                headers: headers,
                body: connection.request.getBody(),
                url: url,
                withCredentials: connection.request.withCredentials,
                responseType: connection.request.responseType
            });
            realHttp.request(connection.request.url, requestOptions)
                .subscribe((response: Response) => {
                    connection.mockRespond(response);
                },
                (error: Response) => {
                    alert('Redirect to the Kakao Login Page');
                    connection.mockRespond(error);
                });

            return;
        }

--------- 인증 토큰 얻기 ---------------
if (connection.request.url.endsWith(’/api/kauth/token’) && connection.request.method === RequestMethod.Post) {
// set the parameters to get authentication token
let grant_type = ‘authorization_code’;
let client_id = ‘11319540bcebc4842a185362c3143574’;
let redirect_uri = ‘http://164.125.34.165:8080/api/kauth/login’;

            // get the parameters from post request
            let code = JSON.parse(connection.request.getBody())['code'];

            // set the request options
            connection.request.headers.append('Access-Control-Allow-Headers', 'Access-Control-Allow-Methods, Access-Control-Allow-Origin');
            connection.request.headers.append('Access-Control-Allow-Methods', 'GET, POST');
            connection.request.headers.append('Access-Control-Allow-Origin', '*');
            connection.request.url = 'https://kauth.kakao.com/oauth/token' + '?' + 'grant_type=' + grant_type + '&client_id=' + client_id + '&redirect_uri' + redirect_uri + '&code=' + code;
            connection.request.withCredentials = true;

            let realHttp = new Http(realBackend, options);
            let requestOptions = new RequestOptions({
                method: connection.request.method,
                headers: connection.request.headers,
                url: connection.request.url,
                withCredentials: connection.request.withCredentials,
                responseType: connection.request.responseType
            });
            realHttp.request(connection.request.url, requestOptions)
                .subscribe((response: Response) => {
                    connection.mockRespond(response);
                },
                (error: any) => {
                    console.log(error);
                    connection.mockError(error);
                });

            return;
        }

@hrfeel

  • 로그인
    JavaScript SDK를 통해서 구현하시거나 페이지 이동으로 구현해야 합니다.

  • 토큰 발급
    CORS를 허용하지 않아 다이렉트로 rest api를 호출하실 수 없을 거에요.
    proxy 서버를 만들어 사용하셔야 합니다.