[javascript] Google Adsense의 자바 스크립트 오류

여러 애드 센스 실행 사이트에서 다음과 같은 오류가 발생했습니다.

[ http : //] googleads.g.doubleclick.net에 메시지를 게시 할 수 없습니다 . 수신자의 출처는
http://www.anekdotz.com 입니다.

URL이 [ http : //] googleads.g.doubleclick.net/pagead/ads?client=ca-pub-9099580055602120&output= 인 프레임에서 URL [ http : //] www.anekdotz.com/을 사용 하여 프레임 에 액세스하려는 안전하지 않은 JavaScript 시도 html & h = 250 & slotname = 9210181593 & w = 300 & flash = 10.0.42 & url = http % 3A % 2F % 2Fwww.anekdotz.com % 2F & dt = 1269901036429 & correlator = 1269901036438 & frm = 0 & ga_vid = 711000587.1269901037 & ga_fc = 0 & java_tz = 900 & ga_fc = 0 & java_tz = 900 u_aw = 1436 & u_cd = 24 u_nplug = 10 u_nmime가 = 1440 & u_ah = 878 & 101 BIW = 1365 & BIH = 806 이드 = 44,901,212 및 푸 = 0 IFI 1 및 DTD = 153 XPC = Xkfk1oufPQ 및 p = HTTP % 3A // www.anekdotz.com = .
도메인, 프로토콜 및 포트가 일치해야합니다.

(Chrome 자바 스크립트 콘솔에서)

광고가 제대로 표시되고 기본 자바 스크립트 코드에 영향을주지 않습니다. 그러나 때로는 이러한 오류가 페이지 로딩 속도를 늦추는 것처럼 보입니다. 이 문제를 어떻게 해결할 수 있습니까?

(저는 신규 사용자이므로 게시 할 수 있도록 URL을 수정했습니다.)



답변

Google은 스크립트를 엉망으로 만들었습니다. 그것에 대해 할 수있는 일이별로 없습니다.

어떤 이유로 http://pagead2.googlesyndication.net/pagead/expansion_embed.js애드 센스 스크립트에 의해 상위 페이지에 포함 된은 ( <iframe>는) 새로운 HTML5 postMessage 기능을 사용하여 광고를 보관하기 위해 새로 작성된 광고에 대한 정보를 보내려고합니다 .

            ha(this, function (f, e) {
                d[Pa](this.a[A]+"|"+f+":"+e, this.la)
            });

네. 멋진 축소 / 난독 화 된 코드가 있습니다. 신뢰 나, Pa이다 'postMessage'!

targetOrigin이 호출 의 인수 this.la는로 설정됩니다 http://googleads.g.doubleclick.net. 그러나 새 iframe이는 그것으로 작성되었습니다 src로 설정 about:blank. 대상 원본과 일치하지 않으므로 브라우저는 메시지 전송을 거부해야합니다. Chrome만이 콘솔 로그에 실제 윙윙 거리는 소리를내는 것 같습니다.

왜이 작업을 수행하는지 전혀 모르겠습니다. 왜 '*'대상 출처로 사용하지 않는지 신경 쓰지 마세요 . 난독 화 된 스크립트에 들어가서 알아 내고 싶지 않습니다. 그러나이 오류로 인해 페이지로드 속도가 느려지지는 않습니다. 일시 중지가 표시되는 경우 일반적으로 다른 외부 스크립트를 해결하고 가져 오는 것입니다.


답변

Google은 URL이 about : blank 인 창에 대해 동일한 출처 정책을 무시하는 브라우저 특성을 악용하여 해당 창에서 XMLHttpRequest를 제출하거나이 경우 모든 사이트에 postMessage 요청을 제출할 수 있도록합니다.

내가 아는 한 브라우저는 최근에이 동작을 비활성화했습니다. 패치 된 브라우저가 하나 있어야합니다.

이 고장난 기능이 광고로 수익을 올리는 데 영향을주지 않기를 바랍니다.

귀하의 사이트가 귀하의 잘못없이 Javascript 오류를 생성하는 것은 성가신 일이지만 귀하의 페이지에서 다른 사람의 Javascript를 실행할 때 반드시 수락해야 할 가능성이 있습니다.


답변

브라우저가 다른 웹 사이트의 CSRF 공격을 차단하기 때문에 이는 정상입니다.

googleads...웹 사이트에 액세스하고이 문제를 해결 하려면 웹 crossdomain.xml루트에 이름이 지정된 파일을 만들고 다음 내용으로 채우십시오.

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy
  SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="googleads.g.doubleclick.net" />
</cross-domain-policy>

테스트하려면 http://your-domain.com/crossdomain.xml 도메인으로 이동하여 해당 페이지에 오류가 없는지 확인하십시오. 또한 와일드 카드 등을 사용할 수 있습니다 (참조 참조). 완료되면 페이지를 새로 고칩니다. 도움이되기를 바랍니다.

라이브 예 :
http://www.blanjamudah.com/crossdomain.xml

참조 :
http://en.wikipedia.org/wiki/Cross-site_request_forgery
http://curtismorley.com/2007/09/01/flash-flex-tutorial-how-to-create-a-crossdomainxml-file/


답변

googleads.g.doubleclick.net에 대한 액세스를 허용하는 사이트 루트의 crossdomain.xml 파일이 문제를 해결해야합니다.

http://www.warriorforum.com/adsense-ppc-seo-discussion-forum/458906-adsense-blank-space-problem.html 페이지를 참조하십시오.


답변

도메인 및 프로토콜 오류 코드를 검색 한 후이 페이지를 방문하는 경우 :

애드 센스는 이전 소스 코드를 사용할 때 생성되는 교차 도메인 오류를 해결하는 자바 스크립트 의 새로운 비동기 버전 을 출시했습니다 . AJAX가 많은 사이트에서 표준 임베드 코드를 사용했을 때 도메인 간 오류가 발생했습니다. 비동기 코드를 구현하고 적절하게 정의 된 crossdomain.xml과 함께 도메인 간 오류가 사라졌습니다.


답변

이것은 실제 원인을 가리는 오류 메시지의 경우 인 것 같습니다. 실제 원인은 아마도 일종의 애드 센스 구성 오류 일 것입니다. 불행히도 애드 센스는 더 관련성 높은 오류 메시지를 제공하기 위해 충분한 검사를 수행하지 않는 것 같습니다.

나도이 오류가 있었고 포럼을 조사한 후이 결론에 도달했는데, 일부 사람들은 은행 계좌 등을 확인한 후 수정되었다고보고했습니다. 제 경우에는 서버 측 환경이 google_ad_client 매개 변수를 엉망으로 만들었 기 때문에 실제 문제는 해당 매개 변수가 null이라는 것입니다. 이 문제를 해결하면 광고가 표시되고 더 이상 오류 메시지가 표시되지 않습니다.

따라서 실제로는 동일 출처 정책과 관련이 없습니다. 이제 애드 센스 코드가 정확하므로 이제는 서버뿐만 아니라 localhost에서 실행할 때도 광고를 표시 할 수 있습니다.


답변

비슷한 문제가 생겼습니다. 관련이 있는지 확실하지 않지만 어쨌든 설명하겠습니다.

내 페이지에 두 개의 광고가 게재되었고 페이지 끝에서이 스크립트를 한 번만 호출하여 코드를 “리팩터링”하고 싶었습니다.

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

내 광고가 깨져서이 스크립트 태그를 각 광고 var 스크립트 바로 뒤에 배치해야한다는 것을 알았습니다.

<script type="text/javascript"><!--
google_ad_client = "ca-pub-872346872364872364";
google_ad_slot = "719238712983";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>

그러나 변경 사항을 되 돌렸을 때 첫 번째 스크립트 태그는 여전히 내 페이지 하단에 배치되어 내 스크립트 태그 중 다른 하나를 광고로로드하려고했습니다. 이것은 실패했고 당신이 본 오류가 발생했습니다.

따라서 두 개의 광고 스크립트 태그를 서로 뒤에 유지하고 다른 위치는 사용하지 않는지 확인하십시오. 예 :

<script type="text/javascript"><!--
google_ad_client = "ca-pub-872346872364872364";
google_ad_slot = "719238712983";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>