bestsource

iframe 문서 개체에 액세스할 때 "액세스 거부" 오류가 발생했습니다.

bestsource 2023. 9. 16. 09:31
반응형

iframe 문서 개체에 액세스할 때 "액세스 거부" 오류가 발생했습니다.

많은 매개변수가 있는 형태로 AJAX 폼을 게시하기 위해 나는 다음을 생성하는 솔루션을 사용하고 있습니다.iframe, POST를 통해 양식을 게시한 다음 액세스합니다.iframe의 컨텐츠. 구체적으로 다음과 같이 컨텐츠에 액세스하고 있습니다.

$("some_iframe_id").get(0).contentWindow.document

제가 테스트해봤는데 효과가 있었습니다.

일부 페이지에서 "액세스 거부" 오류가 발생하기 시작했습니다.iframe이 같은 도메인에서 제공되는 경우에는 이런 일이 발생하지 않는 것으로 알고 있습니다.

전에는 분명히 효과가 있었을 겁니다.아무도 감을 못 잡았나요?

만약 내가 충분히 설명하지 못한다면,는 같은 도메인에 글을 올립니다.그러니까 이건 교차 도메인 요청이 아닙니다.저는 IE에서만 테스트를 하고 있습니다.

추신. 간단한 ajax POST 쿼리를 사용할 수 없습니다(묻지마...)

혼자 해결했습니다!

문제는 (Fiddler로 확인된) 올바른 응답이 전송되고 있음에도 불구하고 (200이 아닌) HTTP 500 오류 코드로 전송되고 있다는 것이었습니다.

따라서 응답이 오류 코드로 전송되면 IE가 해당 내용을 대체하는 것으로 나타났습니다.iframe디스크에서 오류 메시지가 로드된 경우(res://ieframe.dll/http_500.htm), 그리고 이로 인해 도메인 간 액세스 거부 오류가 발생합니다.

교차 도메인 제한(일명 CORS)과 같은 iFrames와 관련된 보안 제한에 주의하십시오.다음은 CORS와 관련된 일반적인 오류 3가지입니다.

  1. 다른 도메인의 iFrame을 로드합니다. (예: "www.foo.com "을 여는 경우, 상단 프레임은 "www.ooof.com "입니다.)

  2. 다른 포트로 iFrame 로드: iFrame의 URL 포트가 최상위 프레임의 URL 포트와 다릅니다.

  3. 다른 프로토콜: 상위 프레임이 HTTP를 사용하는 동안 HTTPS를 통해 iFrame 리소스를 로드합니다.

저의 문제는.X-Frame-OptionsHTTP 헤더.내 Apache 구성은 다음과 같이 설정됩니다.

Header always append X-Frame-Options DENY

제거하면 작동할 수 있었습니다.특히 제 경우에는 iframe transport를 jQuery 파일 업로드 플러그인과 함께 사용하여 IE 9와 IE 10에서 파일을 업로드하고 있었습니다.

이 질문이 아주 오래된 질문이라는 것을 알지만, 위의 답변이 저에게 효과가 있다는 것을 말씀드리고 싶었습니다. document.domain을 각 페이지, 즉 상위 페이지와 iframe 페이지에서 동일하게 설정하는 것입니다.하지만 제가 검색한 결과, 이 재미있는 기사를 발견했습니다.

http://softwareas.com/cross-domain-communication-with-iframes

iframe 과 iframe iframe 합니다 iframe iframe iframe src='javascript:void(0)' like javascript .frame.document.location =...IE에서 Access Denied 오류와 함께 실패합니다.대상 프레임과 상호 작용하는 자바스크립트 라이브러리를 사용하고 있었습니다.프레임을 변경하려는 위치가 상위 도메인과 동일한 도메인에 있음에도 불구하고 iframe이 처음에 javascript:void로 설정되어 도메인 간 액세스 거부 오류가 발생했습니다.

하기 위해 는 제 blank. 페이지를 자바스크립트를에 변경될 이 될 , 을 빈 을 하기 는 에 이 에 까지 를 해야 될 로 는 을 과 를 가 을 하기 는 에 이 에 를 까지 src='/content/blank.html'는 동일한 도메인에 있습니다.

또는 iframe이 생성될 때 src를 설정할 수 있도록 javascript를 통해 iframe을 완전히 생성할 수도 있지만, 저의 경우 iframe이 이미 페이지에 선언되어 있어야 하는 라이브러리를 사용하고 있었습니다.

기본적으로 프레임과 ii 외부의 문서가 서로 다른 도메인을 가질 때 이 오류가 발생합니다.따라서 크로스 사이드 스크립팅 브라우저를 방지하기 위해 이러한 실행을 비활성화합니다.

www.foo.com 에서 www.api.foo.com 로 요청을 보내는 것과 같은 도메인 문제(또는 하위 도메인)인 경우

각 페이지에서 설정할 수 있습니다.

document.domain = www.foo.com

"교차 도메인" 권한을 허용합니다.

언급URL : https://stackoverflow.com/questions/151362/access-is-denied-error-on-accessing-iframe-document-object

반응형