복붙노트

[JQUERY] 액세스 제어 요청 헤더, jQuery로 AJAX 요청의 헤더에 추가한다

JQUERY

액세스 제어 요청 헤더, jQuery로 AJAX 요청의 헤더에 추가한다

해결법


  1. 1.당신이 파이어 폭스에서 본 것은 실제 요구하지 않았다; HTTP 메소드는 POST OPTIONS되지 않습니다. 실제로 브라우저가 도메인 간 AJAX 요청을 허용할지 여부를 결정 할 수있는 '비행 전'을 요청했다 :

    당신이 파이어 폭스에서 본 것은 실제 요구하지 않았다; HTTP 메소드는 POST OPTIONS되지 않습니다. 실제로 브라우저가 도메인 간 AJAX 요청을 허용할지 여부를 결정 할 수있는 '비행 전'을 요청했다 :

    http://www.w3.org/TR/cors/

    비행 전 요청 액세스 제어 - 요청 - 헤더 헤더는 실제 요청 헤더의 목록이 포함되어 있습니다. 서버는 다음이 헤더는 브라우저을 제출하기 전에, 실제 요청을 이러한 맥락에서 지원 여부와 관계없이 다시보고 할 것으로 예상된다.


  2. 2.여기에 어떻게 jQuery를 Ajax 호출에 요청 헤더를 설정하는 예입니다 :

    여기에 어떻게 jQuery를 Ajax 호출에 요청 헤더를 설정하는 예입니다 :

    $.ajax({
      type: "POST",
      beforeSend: function(request) {
        request.setRequestHeader("Authority", authorizationToken);
      },
      url: "entities",
      data: "json=" + escape(JSON.stringify(createRequestObject)),
      processData: false,
      success: function(msg) {
        $("#results").append("The result =" + StringifyPretty(msg));
      }
    });
    

  3. 3.다음이 코드는 나를 위해 작동합니다. 나는 항상 단지 작은 따옴표를 사용하고 그것을 잘 작동합니다. 당신은 작은 따옴표 또는 유일한 따옴표를 사용해야합니다 제안,하지만 혼합.

    다음이 코드는 나를 위해 작동합니다. 나는 항상 단지 작은 따옴표를 사용하고 그것을 잘 작동합니다. 당신은 작은 따옴표 또는 유일한 따옴표를 사용해야합니다 제안,하지만 혼합.

    $.ajax({
        url: 'YourRestEndPoint',
        headers: {
            'Authorization':'Basic xxxxxxxxxxxxx',
            'X-CSRF-TOKEN':'xxxxxxxxxxxxxxxxxxxx',
            'Content-Type':'application/json'
        },
        method: 'POST',
        dataType: 'json',
        data: YourData,
        success: function(data){
          console.log('succes: '+data);
        }
      });
    

  4. 4.당신이 당신의 CORS 있도록 사용자 정의 헤더를 보낼 수 있기 때문에 브라우저가 먼저 프리 플라이트 옵션은 서버가 요청을 할 수 있는지 확인을 요청 보내도록 요청은 간단한 요청하지 않습니다.

    당신이 당신의 CORS 있도록 사용자 정의 헤더를 보낼 수 있기 때문에 브라우저가 먼저 프리 플라이트 옵션은 서버가 요청을 할 수 있는지 확인을 요청 보내도록 요청은 간단한 요청하지 않습니다.

    서버에 CORS을 설정하면 다음 코드가 작동합니다. 당신은 또한 (여기에) 자바 스크립트 대신 가져올 수 있습니다

    '? : //server.test-cors.org/server = TRUE & 상태 = 200 & 방법 = POST 및 헤더 = 내 - 우선 - 헤더, 내 - 두 번째 헤더를 사용 HTTPS'; URL이 = 보자 {(아약스 $ 입력 : 'POST', URL : URL, 헤더 : { "내-최초 헤더": "첫 번째 값" "내-두 번째 헤더": "두 번째 값" } }). 다 (기능 (데이터) { 경보 (데이터 [0] + .request.httpMethod '는 발송 된 - 오픈 크롬 콘솔> 네트워크는 그것을보고'); }); <스크립트 SRC = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js">

    여기서 (nginx.conf 파일)의 nginx에 CORS 온 구성 예이다 :

    위치 ~ ^ / 인덱스 \ .PHP (/ | $) { ... add_header '액세스 제어 - 허용 - 원산지' "$ http_origin"항상; add_header '액세스 제어 - 허용 - 자격 증명' '사실'항상; 경우 ($ REQUEST_METHOD = 옵션) { add_header '액세스 제어 - 허용 - 원산지' "$ http_origin"; #이 줄을 제거하지 마십시오 ( '경우'위의 외부와 배) add_header '액세스 제어 - 허용 - 자격 증명' ''는 true, add_header '액세스 제어 - 최대 에이지'1728000; 이십일에 대한 # 캐시 프리 플라이트 값 add_header은 '액세스 제어 - 허용 - 방법', 'GET, POST, OPTIONS'; add_header '액세스 제어 - 헤더 허용' '내 - 우선 - 헤더, 내 - 두 번째 헤더, 인증, 콘텐츠 형식, 수락, 원산지를'; add_header '콘텐츠 길이'0; add_header '콘텐츠 유형' '텍스트 / 일반 캐릭터 세트 = UTF-8'; 204 리턴; } }

    여기 아파치 (htaccess로 파일)에 CORS 온 구성 예는

    # ------------------------------------------------- ----------------------------- # | 크로스 도메인 Ajax 요청 | # ------------------------------------------------- ----------------------------- # 출처 간 Ajax 요청을 사용합니다. # http://code.google.com/p/html5security/wiki/CrossOriginRequestSecurity # http://enable-cors.org/ # # 헤더는 Access-Control-Allow-Origin 설정 "*" # 지시어도 는 #header 세트 액세스 제어 - 허용 - 원산지 "http://example.com:3000" 는 #header 항상 설정 액세스 제어 - 허용 - 자격 증명을 "true"로 헤더는 Access-Control-Allow-Origin "*"로 설정 헤더는 항상 설정 액세스 제어 - 허용 - 방법 "POST, GET, 옵션, DELETE, PUT" 헤더는 항상 설정 액세스 제어 - 헤더 허용 "내-최초 헤더, 내 - 두 번째 헤더, 인증, 콘텐츠 형식, CSRF 토큰"


  5. 5.그리고 그 옵션이 브라우저는 당신이 할 수 있습니다 무엇에 제한되어 있기 때문에 당신이 자바 스크립트와 봇을 만들 수없는 이유입니다. 당신은 다른 기원에 무작위로 요청을 보내는 대부분의 브라우저가 따르는 CORS 정책을 따르는 브라우저를 주문하고 단순히 응답을 얻을 수 없습니다!

    그리고 그 옵션이 브라우저는 당신이 할 수 있습니다 무엇에 제한되어 있기 때문에 당신이 자바 스크립트와 봇을 만들 수없는 이유입니다. 당신은 다른 기원에 무작위로 요청을 보내는 대부분의 브라우저가 따르는 CORS 정책을 따르는 브라우저를 주문하고 단순히 응답을 얻을 수 없습니다!

    당신이 브라우저와 함께 제공되는 개발자 도구에서 기원 헤더처럼 수동으로 일부 요청 헤더를 편집하려고하면 또한, 브라우저는 사용자의 편집을 거부하고 프리 플라이트 옵션 요청 보낼 수 있습니다.


  6. 6.랙 고르 보석을 사용해보십시오. 그리고 당신의 Ajax 호출의 헤더 필드를 추가합니다.

    랙 고르 보석을 사용해보십시오. 그리고 당신의 Ajax 호출의 헤더 필드를 추가합니다.

  7. from https://stackoverflow.com/questions/10093053/access-control-request-headers-is-added-to-header-in-ajax-request-with-jquery by cc-by-sa and MIT license