복붙노트

[JQUERY] 없음 '액세스 제어는 - - 원산지를 허용'헤더는 요청 된 자원에 존재합니다. 원산지는 '...'때문에 접근이 허용되지 않는다

JQUERY

없음 '액세스 제어는 - - 원산지를 허용'헤더는 요청 된 자원에 존재합니다. 원산지는 '...'때문에 접근이 허용되지 않는다

해결법


  1. 1.사용 addHeader 대신 setHeader 방법을 사용하여,

    사용 addHeader 대신 setHeader 방법을 사용하여,

    response.addHeader("Access-Control-Allow-Origin", "*");
    

    * 위의 줄을 모든 도메인에 대한 액세스를 허용합니다.

    특정 도메인에 대해서만 액세스를 허용의 경우 :

    response.addHeader("Access-Control-Allow-Origin", "http://www.example.com");
    

    이 블로그 게시물을 확인하십시오.


  2. 2.자바 스크립트 코드가 www.example.com에서 페이지에서, 의미, 동일 출처 정책에 의해 제한됩니다 만 정확히 www.example.com,이 경우 정확히 동일한 도메인에있는 서비스 (AJAX) 요청을 할 수 있습니다 (하지 example.com - www를 - 또는 whatever.example.com).

    자바 스크립트 코드가 www.example.com에서 페이지에서, 의미, 동일 출처 정책에 의해 제한됩니다 만 정확히 www.example.com,이 경우 정확히 동일한 도메인에있는 서비스 (AJAX) 요청을 할 수 있습니다 (하지 example.com - www를 - 또는 whatever.example.com).

    귀하의 경우에는, 당신의 Ajax 코드는 http://www.wordicious.com에 위치한 페이지에서 http://wordicious.com에서 서비스에 도달하기 위해 노력하고있다.

    매우 유사하지만, 그들은 동일한 도메인 아니다. 그들은 동일한 도메인에없는 경우 대상의 respose가있는 액세스 제어 - 허용 - 원산지 헤더를 포함한다면, 요청은 성공합니다.

    http://wordicious.com에서 페이지 / 서비스가 현재와 같은 헤더로 구성되지 않았다로서, 해당 오류 메시지가 표시됩니다.

    AS는 원점 (자바 스크립트와 페이지에 위치)와 (자바 스크립트가 도달하려고하는) 대상 도메인이 정확히 동일해야했다.

    귀하의 경우 오타처럼 보인다. http://wordicious.com 및 http://www.wordicious.com 것 같은데 실제로는 동일한 서버 / 도메인입니다. 당신 아약스 코드 요청 페이지 / http://www.wordicious.com하지 http://wordicious.com을 서비스합니다 그래서 해결하려면, 동일 대상 및 원점을 입력합니다. (어쩌면 도메인 않고, '/login.php'처럼, 상대적으로 대상 URL을 배치).

    문제는이 질문의 같은 오타가 아닌 것 같다 경우,이 솔루션은 대상 도메인에 액세스 제어 - 허용 - 원산지를 추가하는 것입니다. 추가하려면 해당 주소 뒤에 서버 / 언어, 물론, 따라 달라집니다. 때때로 도구에서 구성 변수는 트릭을 할 것입니다. 다른 시간 당신은 코드를 통해 직접 헤더를 추가해야합니다.


  3. 3..NET 서버의 web.config이를 구성 할 수 있습니다를 들어 아래와 같이

    .NET 서버의 web.config이를 구성 할 수 있습니다를 들어 아래와 같이

     <system.webServer>
       <httpProtocol>
         <customHeaders>
           <add name="Access-Control-Allow-Origin" value="your_clientside_websiteurl" />
         </customHeaders>
       </httpProtocol>
     </system.webServer>
    

    서버 도메인이 http://live.makemypublication.com하고 클라이언트가 아래와 같이 서버의 web.config에서 구성하십시오 http://www.makemypublication.com 인 경우 예를 들어, 말을 할 수 있습니다

     <system.webServer>
       <httpProtocol>
         <customHeaders>
           <add name="Access-Control-Allow-Origin" value="http://www.makemypublication.com" />
         </customHeaders>
      </httpProtocol>
     </system.webServer>
    

  4. 4.당신은 브라우저에서이 오류 메시지가 나타나면 :

    당신은 브라우저에서이 오류 메시지가 나타나면 :

    당신이 당신의 통제를 벗어 원격 서버에 아약스 POST / GET 요청을하려고 할 때,이 간단한 수정에 대해 잊지하시기 바랍니다 :

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

    당신이 정말로 당신은 단지 Ajax 요청을 자바 스크립트를 사용하는 경우 특히, 무엇을해야하는지, 쿼리를 받아 원격 서버를 통해 보내 내부 프록시입니다.

    먼저 자바 스크립트에서, 자신의 서버에 Ajax 호출을, 같은 :

    $.ajax({
        url: yourserver.com/controller/proxy.php,
        async:false,
        type: "POST",
        dataType: "json",
        data: data,
        success: function (result) {
            JSON.parse(result);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            console.log(xhr);
        }
    });
    

    그런 다음 POST 데이터를 포장하고 매개 변수로 원격 URL 서버를 추가하는 간단한 PHP 파일이라고 proxy.php을 만들 수 있습니다. 나는 익스 피디아 호텔 검색 API를 사용하여이 문제를 우회 당신이 어떻게의 예를 제공합니다 :

    if (isset($_POST)) {
      $apiKey = $_POST['apiKey'];
      $cid = $_POST['cid'];
      $minorRev = 99;
    
      $url = 'http://api.ean.com/ean-services/rs/hotel/v3/list?' . 'cid='. $cid . '&' . 'minorRev=' . $minorRev . '&' . 'apiKey=' . $apiKey;
    
      echo json_encode(file_get_contents($url));
     }
    

    이렇게함으로써 :

     echo json_encode(file_get_contents($url));
    

    당신은 동일한 쿼리를 수행하지만 서버 측을 한 후, 그것을해야 잘 작동하고 있습니다.


  5. 5.당신은 당신의 PHP 페이지 "login.php"의 시작이를 추가해야

    당신은 당신의 PHP 페이지 "login.php"의 시작이를 추가해야

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

  6. 6.당신은 옵션 방법 응답의 헤더 키 / 값을 넣어해야합니다. 예를 들어, 당신은 http://mydomain.com/myresource에서 자원이있는 경우 다음, 서버 코드에서 당신은 쓰기

    당신은 옵션 방법 응답의 헤더 키 / 값을 넣어해야합니다. 예를 들어, 당신은 http://mydomain.com/myresource에서 자원이있는 경우 다음, 서버 코드에서 당신은 쓰기

    //response handler
    void handleRequest(Request request, Response response) {
        if(request.method == "OPTIONS") {
           response.setHeader("Access-Control-Allow-Origin","http://clientDomain.com")
           response.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
           response.setHeader("Access-Control-Allow-Headers", "Content-Type");
        }
    
    
    
    }
    

  7. 7.다음과 같은 추가 매개 변수를 추가하여 기본적으로 ALTER API 헤더 응답.

    다음과 같은 추가 매개 변수를 추가하여 기본적으로 ALTER API 헤더 응답.

    액세스 제어 - 허용 - 자격 증명 : 사실

    액세스 제어 - 허용 - 원산지 : *

    이 보안에 관해서 그러나 이것은 좋은 해결책이 아니다


  8. 8.해결 방법은 당신의 '소스'호스트에서 실행 및 피들러 같은 대상 서버에 전달 역방향 프록시를 사용하는 것입니다 :

    해결 방법은 당신의 '소스'호스트에서 실행 및 피들러 같은 대상 서버에 전달 역방향 프록시를 사용하는 것입니다 :

    여기에 링크 : http://docs.telerik.com/fiddler/configure-fiddler/tasks/usefiddlerasreverseproxy

    또는 아파치 리버스 프록시 ...


  9. 9.당신에게 PHP 파일 또는 메인 컨트롤러를이 추가

    당신에게 PHP 파일 또는 메인 컨트롤러를이 추가

    header("Access-Control-Allow-Origin: http://localhost:9000");
    

  10. 10.httpd.conf 파일에서 항목을 아래로 해결

    httpd.conf 파일에서 항목을 아래로 해결

    #CORS Issue
    Header set X-Content-Type-Options "nosniff"
    Header always set Access-Control-Max-Age 1728000
    Header always set Access-Control-Allow-Origin: "*"
    Header always set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT,PATCH"
    Header always set Access-Control-Allow-Headers: "DNT,X-CustomHeader,Keep-Alive,Content-Type,Origin,Authentication,Authorization,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control"
    Header always set Access-Control-Allow-Credentials true
    
    #CORS REWRITE
    RewriteEngine On                  
    RewriteCond %{REQUEST_METHOD} OPTIONS 
    #RewriteRule ^(.*)$ $1 [R=200,L]
    RewriteRule ^(.*)$ $1 [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]]
    

  11. 11.요청 헤더를 설정하는 자바 스크립트 XMLHttpRequest 객체에서 사용되는 기능을 찾아주세요.

    요청 헤더를 설정하는 자바 스크립트 XMLHttpRequest 객체에서 사용되는 기능을 찾아주세요.

    ...
    
    xmlHttp.setRequestHeader("Access-Control-Allow-Origin", "http://www.example.com");
    ...
    </script>
    
    

    참조 : https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader

  12. from https://stackoverflow.com/questions/20433655/no-access-control-allow-origin-header-is-present-on-the-requested-resource-or by cc-by-sa and MIT license