source

에서 차단되는 크로스 오리진 요구

goodcode 2023. 3. 27. 23:01
반응형

에서 차단되는 크로스 오리진 요구

WordPress 사이트를 가지고 있는데, godaddy seal에서 오류가 발생하고 있습니다.사이트 바닥글 위젯 섹션에 검증 이미지용 html이 있습니다.

페이지를 새로고침하여 firebug를 체크하면 콘솔에 이 오류가 나타납니다.

차단된 발신지 간 요청:같은 오리진 정책에서는 https://seal.godaddy.com/setSealAttr?sealID=ID#의 리모트리소스를 읽을 수 없습니다.이 문제는 리소스를 동일한 도메인으로 이동하거나 CORS를 활성화하여 해결할 수 있습니다.

나는 이 문제에 대한 정보를 찾아보려고 노력했지만 그것은 내 능력 밖이다.이 오류의 원인 및 문제 해결 방법에 대해 설명해 주실 수 있습니까?저는 이 오류가 어떻게 발생하는지 이해하려고 합니다.어딘가에서 jquery와 충돌하는 문제입니까, 아니면 씰이 로드되는 방식입니까, 아니면 로드되는 시간입니까?

어떤 도움이라도 주시면 감사하겠습니다.

같은 오리진 정책을 참조하십시오.에 관하여

이 문제는 리소스를 동일한 도메인으로 이동하거나 CORS를 활성화하여 해결할 수 있습니다.

또한 WordPress를 사용하고 있는 경우 다음과 같이 매우 쉽게 프록시를 만들 수 있습니다.

proxy.proxy:

<?
header('Content-type: application/json');
$url=$_GET['url'];
$json=file_get_contents($url);
echo $json;
?>

그런 다음 AJAX와 마찬가지로 도메인 외부의 리소스를 호출하고 프록시를 사용합니다.php를 사용하여 동일한 도메인에서 리소스에 액세스하려는 것처럼 위장합니다.예를 들어 다음과 같습니다.

var url= "my-external-resource.com?param=value";
url = 'proxy.php?url='+url:
$.ajax({
    url: url,
    dataType: 'json',
    success:  function (data) {
        ...
    }
});

여기서 결과는 JSON이 될 것으로 예상됩니다만, 필요에 따라서 헤더/데이터 타입을 HTML, XML 등으로 변경해 주세요.


업데이트 : @Jason은 보안에 대한 흥미로운 점을 제기합니다.나는 전적으로 동의한다.통상적인 상황에서는, 다음의 방법으로 파일에의 리모트 액세스를 막을 수 있습니다..htaccess및 a<Files>지시:

<Files proxy.php>
    Order Deny,Allow
    Deny from All
    Allow from 127.0.0.1
</Files>

...하지만, 이것은 만족스럽지 않다. 왜냐하면 그것은 사용을 방해하기 때문이다.proxy.phpAJAX 콜에서도 마찬가지입니다.해결방법은 다음 중 하나를 체크하는 것입니다.proxy.php는 다른 스크립트에 의해 호출됩니다.

if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) {
    header('HTTP/1.0 403 Forbidden');
    die('You are not allowed to access this file.');     
}

이렇게 하면 프록시를 사용할 수 있습니다.javascript AJAX 호출에서 php를 사용할 수 있지만 원격(또는 로컬)에서 직접 액세스할 수 없습니다.자세한 내용은 다음 답변참조하십시오.$_SERVER['HTTP_X_REQUESTED_WITH']그리고.XMLHttpRequest.

$.ajax({
      type: 'POST',
      url: 'http://fscebook.comxa.com/index.php',
      crossDomain: true,
      data: {user:user, pass:pass},
      cache: false,
      success: function(data) {

        if($.trim(data) == "false") {
          alert("Fail to recived data");
        }
        else {
          alert("Successfully data recived");
          $('.results').html(data);
        }

      }
    });

나는 글리피콘을 사용할 때도 비슷한 문제가 있었다.부트스트랩 ver3에 부속된 woff 글꼴.글꼴 패밀리 선언을 모든 태그 선언보다 먼저 배치하도록 css를 조정한 후 문제가 해결되었습니다.

도메인 간 오류 해결에 머리글 사용:

 $.ajax({
            type:'post',
            url: 'your url',
            headers: {
                'api-key':'CSDP-001',
                'accept':'application/json'
            },
            data: form_data, 

            success:function(data){  
            }
       });

html에 기본 태그를 붙이면 문제를 해결할 수 있습니다.

<head>
<base href="http://www.otherdomain.com/xyz/">
</head>

언급URL : https://stackoverflow.com/questions/23607901/cross-origin-request-blocked-on

반응형