프로그래밍 언어/HTML,CSS,JS

JavaScript를 통해 도메인 간 POST 요청을 보내는 방법

Rateye 2021. 10. 26. 10:43
728x90
반응형
질문 : JavaScript를 통해 도메인 간 POST 요청을 보내려면 어떻게해야합니까?

JavaScript를 통해 도메인 간 POST 요청을 보내려면 어떻게해야합니까?

참고-페이지를 새로 고치면 안되며 나중에 응답을 가져와 구문 분석해야합니다.

답변

업데이트 : 계속하기 전에 모두가 CORS에 대한 html5rocks 튜토리얼을 읽고 이해해야합니다. 이해하기 쉽고 매우 명확합니다.

POST되는 서버를 제어하는 경우 서버에 응답 헤더를 설정하여 "교차 출처 리소스 공유 표준"을 활용하면됩니다. 이 답변은이 스레드의 다른 답변에서 논의되지만 내 의견으로는 명확하지 않습니다.

간단히 말해서 from.com/1.html에서 to.com/postHere.php로 교차 도메인 POST를 수행하는 방법입니다 (예 : PHP 사용). 참고 : NON OPTIONS Access-Control-Allow-Origin 을 설정하면됩니다.이 예에서는 항상 더 작은 코드 스 니펫에 대해 모든 헤더를 설정합니다.

  1. postHere.php에서 다음을 설정하십시오.
    switch ($_SERVER['HTTP_ORIGIN']) {
        case 'http://from.com': case 'https://from.com':
        header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
        header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
        header('Access-Control-Max-Age: 1000');
        header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
        break;
    }
    이렇게하면 스크립트가 도메인 간 POST, GET 및 OPTIONS를 만들 수 있습니다. 계속 읽으면 분명해질 것입니다 ...
  2. JS에서 교차 도메인 POST를 설정합니다 (jQuery 예제) :
    $.ajax({
        type: 'POST',
        url: 'https://to.com/postHere.php',
        crossDomain: true,
        data: '{"some":"json"}',
        dataType: 'json',
        success: function(responseData, textStatus, jqXHR) {
            var value = responseData.someKey;
        },
        error: function (responseData, textStatus, errorThrown) {
            alert('POST failed.');
        }
    });

 

2 단계에서 POST를 수행하면 브라우저가 "OPTIONS"메소드를 서버로 보냅니다. 이것은 브라우저에 의한 "스 니프 (sniff)"로 서버에 POST를 수행하는 동안 멋진 지 확인합니다. 서버는 요청이 "http://from.com "또는 " https://from.com "에서 시작된 경우 POST | GET | ORIGIN에 대한 확인을 브라우저에 알리는 "Access-Control-Allow-Origin"으로 응답합니다. 서버가 정상이므로 브라우저는 두 번째 요청 (이번에는 POST)을 수행합니다. 클라이언트가 보내는 콘텐츠 유형을 설정하도록하는 것이 좋습니다. 따라서이를 허용해야합니다.

MDN에는 전체 흐름이 어떻게 작동하는지 자세히 설명하는 HTTP 액세스 제어 에 대한 훌륭한 글이 있습니다. 문서에 따르면 "사이트 간 XMLHttpRequest를 지원하는 브라우저에서 작동"해야합니다. 그러나 현대 브라우저 만 도메인 간 POST를 허용 한다고 생각하기 때문에 이것은 약간 오해의 소지가 있습니다. 나는 이것이 사파리, 크롬, FF 3.6에서만 작동하는지 확인했습니다.

이 작업을 수행하는 경우 다음 사항에 유의하십시오.

출처 : https://stackoverflow.com/questions/298745/how-do-i-send-a-cross-domain-post-request-via-javascript
728x90
반응형