programing

cross-Origin 때문에 jQuery ajax 요청이 차단되었습니다.

starjava 2023. 10. 4. 20:29
반응형

cross-Origin 때문에 jQuery ajax 요청이 차단되었습니다.

ajax를 통해 원격 url에서 콘텐츠를 가져오는 방법?

cross-Origin 때문에 jQuery ajax 요청이 차단되었습니다.

콘솔 로그

오리진 간 요청 차단:동일한 오리진 정책으로 인해 http://www.dailymotion.com/embed/video/x28j5hv 에서 원격 리소스를 읽을 수 없습니다(이유: CORS 헤더 'Access-Control-Allow-Origin' 누락).

오리진 간 요청 차단:동일한 오리진 정책으로 인해 http://www.dailymotion.com/embed/video/x28j5hv 에서 원격 리소스를 읽을 수 없습니다(이유: CORS 요청 실패).

코드

$.ajax({
url: "http://www.dailymotion.com/embed/video/x28j5hv",
type:'GET',
contentType: "html",
crossDomain:true,
success: function(data){
   //$('#content').html($(data).html());
   var src = $(data).html();
    alert(src);
    return false;
}

사용해 봅니다.JSONP아약스의 요청에 따라동일 오리진 정책을 무시합니다.

http://learn.jquery.com/ajax/working-with-jsonp/

예시해보기

$.ajax({
    url: "https://api.dailymotion.com/video/x28j5hv?fields=title",

    dataType: "jsonp",
    success: function( response ) {
        console.log( response ); // server response
    }

});

고객측에서 할 수 있는 일은 없습니다.crossDomain 호출을 직접 활성화할 수 없습니다. 이를 실행하려면 소스(dailymotion.com )에서 CORS를 활성화해야 합니다.

당신이 실제로 할 수 있는 유일한 것은 당신을 위해 이것을 해주는 서버측 프록시 스크립트를 만드는 것입니다.프로젝트에서 서버측 스크립트를 사용하고 있습니까?PHP, 파이썬, ASP.NET등?그렇다면 HTTP 호출을 dailymotion으로 실행하고 응답을 반환하는 서버측 "proxy" 스크립트를 작성할 수 있습니다.그리고 나서 당신은 당신의 자바스크립트 코드에서 그 스크립트를 호출합니다. 그 서버측 스크립트는 당신의 스크립트 코드와 같은 도메인에 있기 때문에 CORS는 문제가 되지 않습니다.

교차 도메인에 대해 cURL 요청으로 시도해 보십시오.

타사 API를 통해 작업하거나 CROSS-DOMAIN을 통해 데이터를 얻는 경우에는 항상 보다 안전한 cURL 스크립트(server side)를 사용하는 것이 좋습니다.

저는 항상 cURL 스크립트를 선호합니다.

브라우저의 파일 경로를 변경하여 이 문제를 해결했습니다.

  • 대신:c/XAMPP/htdocs/myfile.html
  • 다음과 같이 적었습니다.localhost/myfile.html

원본이 액세스할 수 있는 서버인 경우, 특정 폴더(및 하위 폴더)에 대한 교차 도메인 액세스를 열 수 있습니다..htaccess파일이 적절한 폴더에 있습니다.

<IfModule mod_headers.c>
  Header set Access-Control-Allow-Origin "*"
</IfModule>

$.ajax({
            url: "https://api.dailymotion.com/video/x28j5hv?fields=title",
            type: "POST",
            dataType: "json",
            crossDomain: true,
            format: "json",
            success:function(json){
                console.log('message: ' + "success"+ JSON.stringify(json));                     
            },
            error:function(error){
                console.log('message Error' + JSON.stringify(error));
            }  
        });    
/* <?php header('Access-Control-Allow-Origin: *'); ?> */ 

언급URL : https://stackoverflow.com/questions/31513450/jquery-ajax-request-being-block-because-cross-origin

반응형