programing

콘텐츠를 지정하는 jsonp POST 요청 작성 방법jQuery로 입력하시겠습니까?

easyjava 2023. 2. 28. 23:49
반응형

콘텐츠를 지정하는 jsonp POST 요청 작성 방법jQuery로 입력하시겠습니까?

콘텐츠 타입 'application/json'으로 jsonp POST 요청을 해야 합니다.POST 요구는 다음과 같이 서버에 송신할 수 있습니다.

      jQuery.ajax({
        type: 'POST',
        url: url,
        data: data,
        success: success,
        error: error,
        async: true,
        complete: complete,
        timeout: TIMEOUT,
        scriptCharset: 'UTF-8',
        dataType: 'jsonp',
        jsonp: '_jsonp',
      });

하지만 행을 추가하는 즉시:contentType: "application/json"POST가 아닌 OPTIONS 요청으로 전송을 시작합니다.

콘텐츠 유형을 지정하고 요청을 POST로 제출하려면 어떻게 해야 합니까?

JSONP POST 요구는 할 수 없습니다.

JSONP는 다음 명령어를 작성함으로써 동작합니다.<script>다른 도메인에서 Javascript를 실행하는 태그: POST 요청을 전송할 수 없습니다.<script>태그를 붙입니다.

사용하다jsondataType다음과 같이 보냅니다.

        $.ajax({
            url: "your url which return json",
            type: "POST",
            crossDomain: true,
            data: data,
            dataType: "json",
            success:function(result){
                alert(JSON.stringify(result));
            },
            error:function(xhr,status,error){
                alert(status);
            }
        });

서버측 파일에 다음 행을 입력합니다.

PHP의 경우:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Max-Age: 1000');

java:

response.addHeader( "Access-Control-Allow-Origin", "*" ); 
response.addHeader( "Access-Control-Allow-Methods", "POST" ); 
response.addHeader( "Access-Control-Max-Age", "1000" );

(해킹)솔루션이 몇 번인가 있습니다.JsonP로 투고할 수 있습니다.(GET에서 사용할 수 있는 2000자 이상의 폼을 투고할 수 있습니다.)

클라이언트 어플리케이션 Javascript

$.ajax({
  type: "POST", // you request will be a post request
  data: postData, // javascript object with all my params
  url: COMAPIURL, // my backoffice comunication api url
  dataType: "jsonp", // datatype can be json or jsonp
  success: function(result){
    console.dir(result);
  }
});

자바:

response.addHeader( "Access-Control-Allow-Origin", "*" ); // open your api to any client 
response.addHeader( "Access-Control-Allow-Methods", "POST" ); // a allow post
response.addHeader( "Access-Control-Max-Age", "1000" ); // time from request to response before timeout

PHP:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Max-Age: 1000');

이렇게 하면 서버를 Post Request에 개방할 수 있습니다.ID 등의 정보를 제공하여 서버를 다시 보호해야 합니다.

이 방법을 사용하면 요청 유형을 jsonp에서 json으로 변경할 수도 있습니다. 둘 다 올바르게 응답 컨텐츠 유형을 설정하기만 하면 됩니다.

jsonp

response.setContentType( "text/javascript; charset=utf-8" );

json

response.setContentType( "application/json; charset=utf-8" );

서버가 SOP(동일 원산지 정책)를 더 이상 존중하지 않는다는 것은 아닙니다만, 어느 쪽이든 상관없습니다.

언급URL : https://stackoverflow.com/questions/3860111/how-to-make-a-jsonp-post-request-that-specifies-contenttype-with-jquery

반응형