ABOUT ME

-

오늘 방문자
-
어제 방문자
-
전체
-
  • [JavaScript] CORS란?
    JS 2019. 3. 12. 23:34


    CORS(Cross-Origin Resource Sharing) 란?


    SOP 원칙을 깨고 외부 도메인에서의 요청(접근)을 허용해주는 규약.


    특정 도메인에서 접근하는 것이 가능하도록 해준다. 




    CORS 종류

    1) Simple

    2) Preflight

    3) Credential

    3) Non-Credential



    Simple Request

    필수조건

    1) GET, HEAD,POST중 1가지 방식 사용해야함


    2) POST일 경우 셋중 하나여야함

    -application/x-www-form-urlencoded

    -multipart/form-data

    -text/plain


    3) 커스텀 헤더를 전송하면 안됨



    Preflight Request

    Simple Request 조건에 해당하지 않으면 브라우저는Preflight Request방식으로 요청함


    Credential Request

    HTTP Cookie와 HTTP Authentication 정보를 인식할 수 있게 해주는 요청

    서버는 Response Header에 반드시 Access-Control-Allow-Credentials: true를 포함해야함

    Access-Control-Allow-Origin 헤더의 값에 명확히 http://abc.com 같이 명확한 값을 줘야함


    Non-Credential Request

    CORS 요청은 기본적으로 Non-Credential 요청임








    요청을 받는쪽에서 크로스도메인 요청을 허용


    요청을 받는 서버쪽에서 크로스도메인을 통하여 요청을 오는 것을 허용해 주어야 한다.


    서버의 헤더쪽에 아래 코드를 넣어줘야 한다.


    Accss-Control-allow-origin : *




    요청을 보내는쪽에서 크로스도메인 허용



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $.ajax({
        type: 'POST',
        crossDomain: true,
        url: url,
        dataType: 'json',
        success: function (data, textStatus, xhr) {
            $('#bidValue').val(JSON.stringify(data));
        }
    });
     
    cs


    4행의 크로스도메인을 사용한다고 명시해준다. 이것만으로 통신은 불가함


    꼭! 요청을 받는 서버쪽에서도 요청을 허용해준다는 코드를 넣어줘야함.





    요청을 받는 서버쪽의 코드를 건들 수 없다면?


    JSONP를 이용하도록 하자!





















    'JS' 카테고리의 다른 글

    [JavaScript] JSONP ???  (0) 2019.03.13
    [JavaScript ]SOP 동일 출처 정책  (0) 2019.03.13
    크로스도메인이란?  (0) 2019.03.12
    [Vue.js] 네스티 라우터란?  (0) 2019.01.20
    [JavaScript] JSON 다루기 정리  (0) 2018.11.19

    댓글

Designed by Tistory.