복붙노트

[JQUERY] jQuery를 XML 오류 '없음'액세스 제어 - - 원산지를 허용 '헤더가 요청 된 자원에 존재합니다.'

JQUERY

jQuery를 XML 오류 '없음'액세스 제어 - - 원산지를 허용 '헤더가 요청 된 자원에 존재합니다.'

해결법


  1. 1.당신은 인해에 http://run.jsbin.com에 배치 파일에서 http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml에 아약스 호출을 할 수 없습니다 동일 출처 정책.

    당신은 인해에 http://run.jsbin.com에 배치 파일에서 http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml에 아약스 호출을 할 수 없습니다 동일 출처 정책.

    제 (기원 일명) 소스 페이지와 대상 URL로 서로 다른 도메인에 (run.jsbin.com 및 www.ecb.europa.eu), 코드가 실제로 크로스 도메인을 시도한다 (CORS) 요청이 아닌 있습니다 보통 GET.

    몇 즉, 동일 출처 정책은 브라우저가 HTML 페이지의 동일한 도메인에 서비스에 아약스 호출을 허용해야한다고 말한다.

    http://www.example.com/myPage.html에서의 페이지는 직접 http://www.example.com/api/myService처럼, http://www.example.com에있는 서비스를 요청할 수 있습니다. 서비스가 다른 도메인에서 호스팅되는 경우, 브라우저가 직접 호출 (예상대로)하지 않습니다 (http://www.ok.com/api/myService 말한다). 대신, CORS 요청을하려고합니다.

    다른 도메인에서 * A (CORS) 요청을 수행하기 위해, 곧 넣어하려면 브라우저 :

    * 상기 예로 도시 없음 팬시 헤더 일반 GET 같은 간단한 요청 단계. 요청이 간단하지 않은 경우 (콘텐츠 형식으로 응용 프로그램 / JSON과 POST 등), 브라우저를 이행하기 전에, 먼저 옵션은 대상 URL에 요청 보낼 것입니다, 그것을 순간을 보유하고 있습니다. 이 옵션 요청에 대한 응답이 CORS 헤더가 포함되어있는 경우 위처럼 만 계속됩니다. 이 옵션 호출은 프리 플라이트 요청으로 알려져있다. ** 나는 일반 전화와 CORS 통화 사이의 다른 차이가 거의 때문에 말하고있다. 중요한 하나는 그들이이 액세스 제어 - 노출 - 헤더 헤더에 포함되지 않은 경우 응답에 존재하는이 브라우저에 의해 선택되지 않습니다 경우에도 일부 헤더.

    그냥 오타 되었습니까? 때로는 자바 스크립트 코드는 대상 도메인 단지 오타가 있습니다. 당신은 확인 했습니까? 페이지가 www.example.com에있는 경우에만 www.example.com에 일반 전화를 할 것입니다! 같은 api.example.com 같은 다른 URL 또는 심지어 example.com 또는 www.example.com:8080 브라우저로 다른 도메인으로 간주됩니다! 포트가 다른 경우 예, 다음은 다른 도메인입니다!

    헤더를 추가합니다. CORS을 가능하게하는 가장 간단한 방법은 서버의 응답에 (액세스 제어 - 허용 - 원산지 등) 필요한 헤더를 추가하는 것입니다. (각 서버 / 언어 않도록 할 수있는 방법이있다 -. 여기에 몇 가지 솔루션을 체크를)

    마지막 리조트 : 당신이 서비스에 대한 서버 측 액세스 할 수없는 경우는 (예 : 리버스 프록시 같은 도구를 통해)을 반영하고, 필요한 모든 헤더를 포함 할 수있다.


  2. 2.당신이 PHP를 서버에서 사용할 수있는 경우에 그것을 할 수있는 해킹-tastic 한 방법의 종류가있다. 이 줄을 변경 :

    당신이 PHP를 서버에서 사용할 수있는 경우에 그것을 할 수있는 해킹-tastic 한 방법의 종류가있다. 이 줄을 변경 :

    url:   'http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml',
    

    이 라인 :

    url: '/path/to/phpscript.php',
    

    다음 PHP 스크립트에서 (당신이 file_get_contents () 함수를 사용할 수있는 권한이있는 경우) :

    <?php
    
    header('Content-type: application/xml');
    echo file_get_contents("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
    
    ?>
    

    PHP는 해당 URL이 다른 기원에서 경우 마음을하지 않는 것 같습니다. 내가 말했듯이, 이것은 해키 대답하고, 나는 확실히 그것으로 뭔가 잘못 거기 해요,하지만 나를 위해 작동합니다.

    편집하다: 당신은 PHP에서 결과를 캐시하려면, 여기 당신이 사용하는 것과 PHP 파일입니다 :

    <?php
    
    $cacheName = 'somefile.xml.cache';
    // generate the cache version if it doesn't exist or it's too old!
    $ageInSeconds = 3600; // one hour
    if(!file_exists($cacheName) || filemtime($cacheName) > time() + $ageInSeconds) {
      $contents = file_get_contents('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml');
      file_put_contents($cacheName, $contents);
    }
    
    $xml = simplexml_load_file($cacheName);
    
    header('Content-type: application/xml');
    echo $xml;
    
    ?>
    

    여기에서 코드 걸릴 캐싱.

  3. from https://stackoverflow.com/questions/19821753/jquery-xml-error-no-access-control-allow-origin-header-is-present-on-the-req by cc-by-sa and MIT license