복붙노트

[JQUERY] CORS는 - 어떻게 '프리 플라이트'는 HttpRequest를합니까?

JQUERY

CORS는 - 어떻게 '프리 플라이트'는 HttpRequest를합니까?

해결법


  1. 1.액세스 제어 - 요청 - 방법 및 액세스 제어 - 요청 - 헤더 : 프리 플라이트 요청하는 동안, 당신은 다음과 같은 두 가지 헤더를 볼 수 있습니다. 권한이 실제 요청을하는이 요청 헤더는 서버를 요구하고있다. 귀하의 프리 플라이트 응답은 작업의 실제 요청을 위해이 헤더를 인식 할 필요가있다.

    액세스 제어 - 요청 - 방법 및 액세스 제어 - 요청 - 헤더 : 프리 플라이트 요청하는 동안, 당신은 다음과 같은 두 가지 헤더를 볼 수 있습니다. 권한이 실제 요청을하는이 요청 헤더는 서버를 요구하고있다. 귀하의 프리 플라이트 응답은 작업의 실제 요청을 위해이 헤더를 인식 할 필요가있다.

    예를 들어, 브라우저는 다음과 같은 헤더를 요청하는 가정 :

    Origin: http://yourdomain.com
    Access-Control-Request-Method: POST
    Access-Control-Request-Headers: X-Custom-Header
    

    귀하의 서버는 다음과 같은 헤더로 응답해야한다 :

    Access-Control-Allow-Origin: http://yourdomain.com
    Access-Control-Allow-Methods: GET, POST
    Access-Control-Allow-Headers: X-Custom-Header
    

    액세스 제어 - 허용 - 헤더 응답 헤더에 특별한주의를 기울이십시오. '*'이 헤더의 값은 액세스 제어 - 요청 - 헤더 요청 헤더에 같은 헤더해야하고, 그것은 될 수 없습니다.

    당신은 프리 플라이트 요청이 응답을 전송하면, 브라우저는 실제 요청을 할 것입니다. 현재 CORS에 대해 자세히 알아볼 수 있습니다 : http://www.html5rocks.com/en/tutorials/cors/


  2. 2.이 스레드 날짜가 2014 년 다시 있지만, 문제는 아직도 우리의 많은 전류가 될 수 있습니다. 여기에 내가 jQuery를 1.12 / PHP 5.6 환경에서 처리하는 방법입니다 :

    이 스레드 날짜가 2014 년 다시 있지만, 문제는 아직도 우리의 많은 전류가 될 수 있습니다. 여기에 내가 jQuery를 1.12 / PHP 5.6 환경에서 처리하는 방법입니다 :

    PHP 코드 샘플 :

    if (!empty($_SERVER['HTTP_ORIGIN'])) {
        // Uh oh, this XHR comes from outer space...
        // Use this opportunity to filter out referers that shouldn't be allowed to see this request
        if (!preg_match('@\.partner\.domain\.net$@'))
            die("End of the road if you're not my business partner.");
    
        // otherwise oblige
        header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN']);
    }
    else {
        // local request, no need to send a specific header for CORS
    }
    

    특히, 출구를 추가하지 마십시오; 더 프리 플라이트가 필요하지 않습니다한다.

  3. from https://stackoverflow.com/questions/8685678/cors-how-do-preflight-an-httprequest by cc-by-sa and MIT license