복붙노트

[JQUERY] 파일에서 실행중인 응용 프로그램에 의해 만들어진 요청에 대한 오류 "원점 널 (null)는 액세스 제어 - 허용 - 원산지에 의해 허용되지 않습니다": // URL

JQUERY

파일에서 실행중인 응용 프로그램에 의해 만들어진 요청에 대한 오류 "원점 널 (null)는 액세스 제어 - 허용 - 원산지에 의해 허용되지 않습니다": // URL

해결법


  1. 1.기록을 위해, 지금까지 내가 말할 수있는 두 가지 문제가 있었다 :

    기록을 위해, 지금까지 내가 말할 수있는 두 가지 문제가 있었다 :

    먼저 $ .getJSON을 사용하는 대린의 제안에 의해 로터리 방식으로 해결되었다. 이 문자열 콜백 =를 보는 경우는 약간의 마법 "JSONP"을 "JSON"의 기본에서 요청 유형을 변경할 수 있습니까? URL을한다.

    // URL : 그것은 더 이상 CORS 파일에서 요청 수행을 시도하여 두 번째를 해결했다.

    다른 사람들을 위해 명확히하기 위해, 여기에 간단한 문제 해결 지침은 다음과 같습니다 :


  2. 2.당신은 아마 당신의 호출 된 스크립트에 헤더를 추가해야합니다, 여기에 내가 PHP에서해야 할 일을했을 것입니다 :

    당신은 아마 당신의 호출 된 스크립트에 헤더를 추가해야합니다, 여기에 내가 PHP에서해야 할 일을했을 것입니다 :

    header('Access-Control-Allow-Origin: *');
    

    크로스 도메인 AJAX의 자세한 내용은 (프랑스어) 서비스 WEB을 ou는.


  3. 3.간단한 HTML 프로젝트의 경우 :

    간단한 HTML 프로젝트의 경우 :

    cd project
    python -m SimpleHTTPServer 8000
    

    그런 다음 파일을 찾습니다.


  4. 4.Google 크롬 v5.0.375.127 (내가 경고를 얻을)에 나를 위해 작품 :

    Google 크롬 v5.0.375.127 (내가 경고를 얻을)에 나를 위해 작품 :

    $.get('http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&callback=?&minx=-30&miny=0&maxx=0&maxy=150',
    function(json) {
        alert(json.photos[1].photoUrl);
    });
    

    또한 나는 이전이 (내 컴퓨터에 적어도) IE8에서 작업을하지 않는 대신으로 $ .getJSON () 메소드를 사용을 권장합니다 :

    $.getJSON('http://www.panoramio.com/wapi/data/get_photos?v=1&key=dummykey&tag=test&offset=0&length=20&callback=?&minx=-30&miny=0&maxx=0&maxy=150', 
    function(json) {
        alert(json.photos[1].photoUrl);
    });
    

    당신은 여기에서 온라인으로 시도 할 수 있습니다.

    최신 정보:

    이제 당신은 당신의 코드를 보여 것을 나는 그것으로 문제를 볼 수 있습니다. 당신은 익명 함수 및 인라인 기능이 있지만 모두 호출됩니다 processImages을 모두 가지고있다. 즉 어떻게 jQuery의 JSONP 지원 작품입니다. 내가 콜백 = 정의하고 어떻게주의 사항? 그래서 당신은 익명의 기능을 사용할 수 있습니다. 당신은 문서에 대한 자세한 내용을 읽을 수 있습니다.

    또 다른 발언은 평가 호출하지 않아야한다는 것입니다. 익명 함수에 전달 된 매개 변수는 이미 jQuery를에 의해 JSON으로 해석됩니다.


  5. 5.한 요청 서버 JSON 데이터 포맷을 지원하는 경우 JSONP (JSON 패딩) 인터페이스를 사용한다. 그것은 당신이 프록시 서버 또는 공상 헤더 물건없이 외부 도메인 요청을 할 수 있습니다.

    한 요청 서버 JSON 데이터 포맷을 지원하는 경우 JSONP (JSON 패딩) 인터페이스를 사용한다. 그것은 당신이 프록시 서버 또는 공상 헤더 물건없이 외부 도메인 요청을 할 수 있습니다.


  6. 6.그것은 동일한 원본 정책, 당신은 JSON-P 인터페이스 또는 동일한 호스트에서 실행중인 프록시를 사용합니다.

    그것은 동일한 원본 정책, 당신은 JSON-P 인터페이스 또는 동일한 호스트에서 실행중인 프록시를 사용합니다.


  7. 7.우리는하여 http.conf 파일 (HTTP 서비스를 다시 시작 후 편집)를 통해 관리 :

    우리는하여 http.conf 파일 (HTTP 서비스를 다시 시작 후 편집)를 통해 관리 :

    <Directory "/home/the directory_where_your_serverside_pages_is">
        Header set Access-Control-Allow-Origin "*"
        AllowOverride all
        Order allow,deny
        Allow from all
    </Directory>
    

    헤더에 액세스 - 제어 - - 원산지 허용 "*"를, 당신이 정확한 URL을 넣을 수 있습니다 설정합니다.


  8. 8.로컬 테스트를하고 또는 파일 같은에서 파일을 호출하는 경우 : // 당신은 비활성화 브라우저 보안에 필요합니다.

    로컬 테스트를하고 또는 파일 같은에서 파일을 호출하는 경우 : // 당신은 비활성화 브라우저 보안에 필요합니다.

    MAC의 경우 : 열린 -a 구글 \ 크롬은 --disable-웹 보안을 --args


  9. 9.내 경우에는, 동일한 코드는 구글 크롬에없는 파이어 폭스에서 잘 근무하지만. 구글 크롬의 자바 스크립트 콘솔은 말했다 :

    내 경우에는, 동일한 코드는 구글 크롬에없는 파이어 폭스에서 잘 근무하지만. 구글 크롬의 자바 스크립트 콘솔은 말했다 :

    XMLHttpRequest cannot load http://www.xyz.com/getZipInfo.php?zip=11234. 
    Origin http://xyz.com is not allowed by Access-Control-Allow-Origin.
    Refused to get unsafe header "X-JSON"
    

    나는 원래 URL 제대로 일치하는 아약스 URL의 WWW 부분을 삭제했고, 그 다음 괜찮 았는데.


  10. 10.모든 서버가 JSONP 지원합니다. 그것은 그것의 결과에 콜백 함수를 설정하기 위해 서버가 필요합니다. 나는 순수한 JSON을 반환하지만, JSONP 지원하지 않는 사이트에서 JSON 응답을 얻기 위해 이것을 사용 :

    모든 서버가 JSONP 지원합니다. 그것은 그것의 결과에 콜백 함수를 설정하기 위해 서버가 필요합니다. 나는 순수한 JSON을 반환하지만, JSONP 지원하지 않는 사이트에서 JSON 응답을 얻기 위해 이것을 사용 :

    function AjaxFeed(){
    
        return $.ajax({
            url:            'http://somesite.com/somejsonfile.php',
            data:           {something: true},
            dataType:       'jsonp',
    
            /* Very important */
            contentType:    'application/json',
        });
    }
    
    function GetData() {
        AjaxFeed()
    
        /* Everything worked okay. Hooray */
        .done(function(data){
            return data;
        })
    
        /* Okay jQuery is stupid manually fix things */
        .fail(function(jqXHR) {
    
            /* Build HTML and update */
            var data = jQuery.parseJSON(jqXHR.responseText);
    
            return data;
        });
    }
    

  11. 11.내가 mod_proxy를 모듈을 사용했습니다, 그래서 나는 아파치 서버를 사용합니다. 모듈을 사용 :

    내가 mod_proxy를 모듈을 사용했습니다, 그래서 나는 아파치 서버를 사용합니다. 모듈을 사용 :

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    

    그런 다음 추가 :

    ProxyPass /your-proxy-url/ http://service-url:serviceport/
    

    마지막으로, 스크립트로 프록시 URL을 전달합니다.


  12. 12.최종 참고로 모질라 문서는 명시 적으로 말한다

    최종 참고로 모질라 문서는 명시 적으로 말한다

    결과적으로 '*'사용에 단순히 나쁜 방법입니다. 간단하게 작동하지 않습니다 :)


  13. 13.크롬, 사파리와 파이어 폭스에서 나를 위해이 작품 - PHP의 경우

    크롬, 사파리와 파이어 폭스에서 나를 위해이 작품 - PHP의 경우

    https://w3c.github.io/webappsec-cors-for-developers/#avoid-returning-access-control-allow-origin-null

    header('Access-Control-Allow-Origin: null');
    

    파일 Axios의 호출 PHP는 라이브 서비스를 사용하여 : //


  14. 14.또한 (나는 다른 브라우저의 경우를 테스트하지 않았다) 크롬에서 같은 오류가 발생했습니다. 이 때문에 내가 www.domain.com 대신에 domain.com에 이동했다는 사실이었다. A는 이상한 비트,하지만 난의 .htaccess에 다음 라인을 추가하여 문제를 해결할 수 있습니다. 그것은 www.domain.com에 domain.com 리디렉션하고 문제가 해결되었다. 나는 거의 WWW을 입력 없지만 분명히 어떤 경우에는이 필요 결코 그래서 나는 게으른 웹 방문자입니다.

    또한 (나는 다른 브라우저의 경우를 테스트하지 않았다) 크롬에서 같은 오류가 발생했습니다. 이 때문에 내가 www.domain.com 대신에 domain.com에 이동했다는 사실이었다. A는 이상한 비트,하지만 난의 .htaccess에 다음 라인을 추가하여 문제를 해결할 수 있습니다. 그것은 www.domain.com에 domain.com 리디렉션하고 문제가 해결되었다. 나는 거의 WWW을 입력 없지만 분명히 어떤 경우에는이 필요 결코 그래서 나는 게으른 웹 방문자입니다.

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
    

  15. 15.당신이 JQuery와의 최신 버전을 사용하십시오. 우리는 JQuery와 1.10.2이 오류에 직면하고 오류가 JQuery와 1.11.1 사용 후 해결되었다

    당신이 JQuery와의 최신 버전을 사용하십시오. 우리는 JQuery와 1.10.2이 오류에 직면하고 오류가 JQuery와 1.11.1 사용 후 해결되었다


  16. 16.여러분,

    여러분,

    나는 비슷한 문제로 달렸다. 그러나 피들러를 사용하여, 나는이 문제에 얻을 수있었습니다. 문제는 웹 API 측의 CORS 구현에 구성된 클라이언트 URL에 후행 슬래시가 없어야한다는 것입니다. 구글 크롬을 통해 요청을 제출하고 피들러의 헤더 섹션의 텍스트 뷰 탭을 검사 한 후 오류 메시지는 다음과 같이 말한다 :

    * "지정된 정책 원산지 your_client_url : / '는 유효하지 않습니다 그것은 슬래시로 끝날 수 없습니다.."

    그것은 인터넷 익스플로러에 문제없이 작동했지만 구글 크롬을 사용하여 테스트 할 때 나에게 두통을 준 때문 진짜 황당하다.

    나는 CORS 코드에서 슬래시를 제거하고 웹 API를 다시 컴파일하고, 이제 API는 문제없이 크롬 및 Internet Explorer를 통해 액세스 할 수 있습니다. 이것을 샷을주십시오.

    감사, 앤디


  17. 17.당신이 파일을 변경하는 경우, 당신은 실제로 (내 경우에는 적어도) 업데이트 된 파일을 사용하려면 서버를 다시 시작해야합니다 위에 CodeGroover에 의해 게시 된 솔루션, 작은 문제가 있습니다.

    당신이 파일을 변경하는 경우, 당신은 실제로 (내 경우에는 적어도) 업데이트 된 파일을 사용하려면 서버를 다시 시작해야합니다 위에 CodeGroover에 의해 게시 된 솔루션, 작은 문제가 있습니다.

    조금 검색 그래서, 내가 사용하려면이 하나를 발견 :

    sudo npm -g install simple-http-server # to install
    nserver # to use
    

    그리고 다음은 HTTP에 될 것입니다 : // localhost를 : 8000.

  18. from https://stackoverflow.com/questions/3595515/origin-null-is-not-allowed-by-access-control-allow-origin-error-for-request-ma by cc-by-sa and MIT license