복붙노트

[JQUERY] 구글 API의에 jQuery를 포스트를 보내는 액세스 제어 - 허용 - 원산지 오류

JQUERY

구글 API의에 jQuery를 포스트를 보내는 액세스 제어 - 허용 - 원산지 오류

해결법


  1. 1.'JSONP'를 추가, 도메인 간 : 나는 액세스 제어 - 허용 - 원산지 데이터 유형에 데이터 유형 매개 변수를 수정 오류를 해결 진실

    'JSONP'를 추가, 도메인 간 : 나는 액세스 제어 - 허용 - 원산지 데이터 유형에 데이터 유형 매개 변수를 수정 오류를 해결 진실

    $.ajax({
    
        url: 'https://www.googleapis.com/moderator/v1/series?key='+key,
        data: myData,
        type: 'GET',
        crossDomain: true,
        dataType: 'jsonp',
        success: function() { alert("Success"); },
        error: function() { alert('Failed!'); },
        beforeSend: setHeader
    });
    

  2. 2.나는 정확히 같은 문제가 있었다 그것은 상호 도메인하지만 같은 도메인이 아니었다. 난 그냥 아약스 요청을 처리 한 PHP 파일에이 라인을 추가했습니다.

    나는 정확히 같은 문제가 있었다 그것은 상호 도메인하지만 같은 도메인이 아니었다. 난 그냥 아약스 요청을 처리 한 PHP 파일에이 라인을 추가했습니다.

    <?php header('Access-Control-Allow-Origin: *'); ?>
    

    그것이 마치 마법처럼 일했다. 포스터 덕분에


  3. 3.이 오류는 해당 응용 프로그램에서 헤더 액세스 제어 - 허용 - 원산지 *를 추가 할 수있는 서비스를 사용하려고하지만, 서버 앞에 리버스 프록시를 넣을 수있는 경우, 오류가 헤딩으로 피할 수 고쳐 쓰기.

    이 오류는 해당 응용 프로그램에서 헤더 액세스 제어 - 허용 - 원산지 *를 추가 할 수있는 서비스를 사용하려고하지만, 서버 앞에 리버스 프록시를 넣을 수있는 경우, 오류가 헤딩으로 피할 수 고쳐 쓰기.

    (www.mydomain.com에서 공개) 포트에 8080을 실행하는 응용 프로그램입니다 가정, 당신은 포트 80에서 동일한 호스트에 역방향 프록시를 넣어,이 Nginx에 역방향 프록시의 구성은 다음과 같습니다

    server {
        listen      80;
        server_name www.mydomain.com;
        access_log  /var/log/nginx/www.mydomain.com.access.log;
        error_log   /var/log/nginx/www.mydomain.com.error.log;
    
        location / {
            proxy_pass   http://127.0.0.1:8080;
            add_header   Access-Control-Allow-Origin *;
        }   
    }
    

  4. 4.사실 여기에 필요하지 않습니다 : 예, jQuery를이 URL을 보는 순간 그것은 크로스 도메인 호출로 그 호출하여 교차 도메인을 가정, 다른 도메인에 속해 있습니다.

    사실 여기에 필요하지 않습니다 : 예, jQuery를이 URL을 보는 순간 그것은 크로스 도메인 호출로 그 호출하여 교차 도메인을 가정, 다른 도메인에 속해 있습니다.

    또한, 귀하의 URL이 다른 도메인 (크로스 도메인)에 속하는 또는 JSONP를 사용하는 경우는 $ 아약스와 동기 전화를 걸 수 없음을 유의해야합니다. 만 비동기 호출이 허용됩니다.

    참고 : 귀하의 요청과 거짓 : 당신이 비동기를 지정하는 경우 동 기적으로 서비스를 호출 할 수 있습니다.


  5. 5.내 코드를 시도 에서 자바 스크립트

    내 코드를 시도 에서 자바 스크립트

     var settings = {
                  "url": "https://myinboxhub.co.in/example",
                  "method": "GET",
                  "timeout": 0,
                  "headers": {},
                };
            $.ajax(settings).done(function (response) {
              console.log(response);
                if (response.auth) { 
                    console.log('on success');
                } 
            }).fail(function (jqXHR, exception) { 
                    var msg = '';
                    if (jqXHR.status === '(failed)net::ERR_INTERNET_DISCONNECTED') {
                        
                            msg = 'Uncaught Error.\n' + jqXHR.responseText; 
                    }
                    if (jqXHR.status === 0) {
                            msg = 'Not connect.\n Verify Network.';
                    } else if (jqXHR.status == 413) {
                            msg = 'Image size is too large.'; 
                    }  else if (jqXHR.status == 404) {
                            msg = 'Requested page not found. [404]'; 
                    } else if (jqXHR.status == 405) {
                            msg = 'Image size is too large.'; 
                    } else if (jqXHR.status == 500) {
                            msg = 'Internal Server Error [500].'; 
                    } else if (exception === 'parsererror') {
                            msg = 'Requested JSON parse failed.'; 
                    } else if (exception === 'timeout') {
                            msg = 'Time out error.'; 
                    } else if (exception === 'abort') {
                            msg = 'Ajax request aborted.'; 
                    } else {
                            msg = 'Uncaught Error.\n' + jqXHR.responseText; 
                    }
                    console.log(msg);
            });;
    

    에서 PHP

    header('Content-type: application/json');
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: GET");
    header("Access-Control-Allow-Methods: GET, OPTIONS");
    header("Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding");
    

  6. 6.내 경우에는 하위 도메인 이름이 문제가 발생합니다. 여기에 세부 사항은

    내 경우에는 하위 도메인 이름이 문제가 발생합니다. 여기에 세부 사항은

    여기 밑줄 (_) 서브 도메인이 CORS 오류를 창조하고, app_development.something.com 사용. 앱 개발에 app_development을 변경 한 후 그것을 잘 작동합니다.


  7. 7.PHP로 약간의 해킹이있다. 그리고 그것은뿐만 아니라 구글과 작동하지만, 어떤 웹 사이트에 당신은 제어하지 않고 액세스 제어 - 허용 - 원산지를 추가 할 수 없습니다 *

    PHP로 약간의 해킹이있다. 그리고 그것은뿐만 아니라 구글과 작동하지만, 어떤 웹 사이트에 당신은 제어하지 않고 액세스 제어 - 허용 - 원산지를 추가 할 수 없습니다 *

    우리는 PHP 파일 우리의 웹 서버에 (예. getContentFromUrl.php)를 작성해야하고 약간의 트릭을합니다.

    PHP

    <?php
    
    $ext_url = $_POST['ext_url'];
    
    echo file_get_contents($ext_url);
    
    ?>
    

    JS

    $.ajax({
        method: 'POST',
        url: 'getContentFromUrl.php', // link to your PHP file
        data: {
            // url where our server will send request which can't be done by AJAX
            'ext_url': 'https://stackoverflow.com/questions/6114436/access-control-allow-origin-error-sending-a-jquery-post-to-google-apis'
        },
        success: function(data) {
            // we can find any data on external url, cause we've got all page
            var $h1 = $(data).find('h1').html();
    
            $('h1').val($h1);
        },
        error:function() {
            console.log('Error');
        }
    });
    

    그것이 작동하는 방법 :

    그리고 우리는 이벤트 onclick을 일부 버튼이 이벤트를 넣을 수 있습니다. 이 의지의 도움을 희망!

  8. from https://stackoverflow.com/questions/6114436/access-control-allow-origin-error-sending-a-jquery-post-to-google-apis by cc-by-sa and MIT license