flask 백 엔 드 + ajax 전단, 크로스 도 메 인 자원 으로 인 한 CORB 문 제 를 해결 합 니 다.

자바 script 에서 도 메 인 을 넘 어 접근 하 는 것 은 흔히 볼 수 있 는 일 입 니 다. 이번 기록 은 fllask 를 사용 하여 백 엔 드 API 를 쓰 고 전단 ajax 호출 시 발생 하 는 도 메 인 문 제 를 기록 합 니 다.
문제 설명: 크로스 필드 자원 이 CORB 를 일 으 킵 니 다.
해결 방안:
jsonp 크로스 도 메 인 문제 해결
전단 코드:
//     ,  callback=jQuery30004159376653216822_1550582355513
        function showData(data) {
            console.info("Get Into showData");
            // json       
            var result = JSON.stringify(data);
            $("#text").val(result);
        }
        //   
        $(document).ready(function () {
            $("#btn").click(function () {
                $.ajax({
                    url: "http://localhost:8080/load/data",
                    type: "GET",
                    dataType: "jsonp", //            
                    jsonpCallback: "showData",  //                  success
                    jsonp: "callback",   //   callback    
                    success: function (data) {
                        console.info("Get Into success");
                        // json       
                        // var result = JSON.stringify(data);
                        // $("#text").val(result);
                    }
                });
            });
        });

서버 코드:
def get_params():
  result = {
        "code": 0,
        "info": "    ",
        "data": [],
    }

    if request.method == 'GET':
        callback = request.args.get("callback")
     ......
        resp = "%s%s%s%s" % (callback, '(', json.dumps(result), ')')  //     callback(json.dumps(result)) 
  
   return resp

방안 해석: Jsonp 의 실현 원 리 는 바로 리 셋 함 수 를 만 든 다음 에 원 격 서비스 에서 이 함 수 를 호출 하고 JSON 데이터 형식 을 매개 변수 로 전달 하여 리 셋 을 완성 하 는 것 이다.상기 전단 코드 에서 리 셋 함수 callback 을 만 들 고 백 엔 드 코드 에서 함수 이름 을 얻 은 다음 에 전단 에 되 돌아 갈 때 원래 의 리 턴 데이터 와 리 턴 함 수 를 상기 형식 으로 연결 하여 리 셋 을 완성 해 야 합 니 다. 이때 전단 은 되 돌아 오 는 데 이 터 를 얻 을 수 있 고 크로스 도 메 인 문 제 를 완벽 하 게 해결 할 수 있 습 니 다!

좋은 웹페이지 즐겨찾기