클라이언트 측 HTML에 태그가없는 이유는 무엇입니까?


18

다른 프로그래머가 다른 날 질문을 받았습니다. 나는 아주 오래 전에 궁금했던 것을 아주 오래 전 기억합니다. 브라우저 측 포함 태그가 고려되지 않은 이유는 무엇입니까? 아니면?

특히 브라우저에 다른 소스의 추가 HTML을 포함하도록 지시 한 태그가 있습니다. 예 <include src="http://server/foo/bar.html">. 많은 사람들이 innerHTML자바 스크립트 엔진 외부에서 브라우저로 동일한 것을 달성 할 수있을 때, 자바 스크립트 호출을하고 이를 달성하기 위해 채 웁니다 .

그것은 고통스러운했을 중첩 된 것으로 <HTML><BODY>의 (예)하지만 우리는 어디 어쨌든 측면을 고려해야합니다.


외부 기관에서 이미 제공하지 않습니까?
피터 테일러

번역은 60 년대에 발명 된 이후에도 하이퍼 텍스트의 핵심 기능으로 간주되었습니다. 그래서 나는 그것이 고려되었다고 확신합니다 ...
Alex Feinman

답변:


12

( Netscape 4 전용 ) layerilayer태그 를 기억하는 지구상에서 마지막 사람 입니까?

넷스케이프 4도 허용div 태그가 가지고 src같은 일을 수행 속성을.

넷스케이프는 W3C에 제출했는데, 이들은 W3C에 포함시키지 않기로했다 iframe.


실제로 NS4는 기억하지만 이러한 기능은 기억하지 못합니다. 너무 나쁘지만, 여전히 크로스 브라우저 자바 스크립트 BS를 많이 절약 할 수 있다고 생각합니다.
Jé Queue

필자의 첫 비 ISP 이메일 주소 중 하나가 ihatenetscape.com의 무료 계정이라는 NS4를 미워하는 것을 기억합니다. Ah, good times : D
wildpeaks

레이어는 여전히 document동일 출처 정책의 대상 이되는 별도의 객체를 가지고 있기 때문에 클라이언트 측에 포함되지 않았습니다 . 그들은 효과적으로 포지셔닝 가능한 iframe이었습니다.
bobince

14

브라우저 측 포함 태그가 고려되지 않은 이유는 무엇입니까? 아니면?

서버 측 포함을 아직 해결하지 않은 모든 초보자 웹 작성자는 www-html 목록에서 초기에 다시 요청했습니다. 그러나 그 당시 W3는 웹 작가의 압력을 완전히 무시하게되어 기뻤습니다.

사이트 간 포함이 허용되면 보안 재해가됩니다. 사용자의 은행에서 페이지를 가져 와서 내용을 읽을 수 있습니다. (원래 DOM 스크립팅은 제한되었지만 대상 페이지에 의해 삭제 된 스크립팅 함수 document.links등에서 계속 읽을 수있었습니다 document.images. 그 이후로 가져온 컨텐츠로 원하는 작업을 수행 할 수 있습니다.)

교차 사이트 포함이 허용되지 않은 경우 ...이 기능은 서버 측 포함에 비해 이점이 없습니다. 서버가 더 잘 처리 할 수 ​​있도록 클라이언트의 작업 속도가 더 느려질 것입니다. 와 달리 <iframe>포함은 페이지로드를 차단해야합니다. SSI는 모든면에서 우수 할 것입니다.


5
실제로 템플릿 (또는 머리글 / 바닥 글 포함)이 페이지마다 바뀌지 않는 경향이 있으므로 클라이언트 (또는 프록시)가 더 효율적으로 캐시 할 수 있습니다. 서버 측 처리가 진행 중입니다.
Alan Pearce

1
서버보다 훨씬 더 많은 일을합니다. 왜 페이지로드를 차단해야하는지 잘 모르겠습니다. 비동기 컨텐츠로 전체 페이지를로드 할 수있었습니다. 물론 브라우저는 원래 서버에서 가져 오기만 허용하거나 도메인 화 된 DOM을 허용하도록 제한 할 수 있습니다.
Jé Queue

나는 그것이 어떻게 보안 재앙인지 알지 못한다. 지금 서버 쪽에서 은행 페이지를 읽고 다른 페이지에 뱉을 수 있습니다. 재난입니까? 어쩌면 보안 관련이 아닐 수도 있습니다. 보안 재해는 다른 도메인에서 쿠키를 읽을 수 있습니다. 이 클라이언트 측이 없으면 서버 측과 정확히 같습니다. 여기서 문제가 보이지 않습니다.
serg

서버 쪽에서 은행 페이지를 가져 오려고 시도 할 수 있지만 요청이 인증되지 않으므로 수분이 많은 정보를 다운로드 할 수 없습니다. 클라이언트 측의 요청에는 쿠키 및 HTTP 인증 토큰이 포함됩니다. 그러한 요청에서 응답을 읽을 수 있으면 사용자를 완전히 가장 할 수 있습니다.
bobince

@bobince : 클라이언트 측 요청에 쿠키와 HTTP 인증 토큰이 포함되어야하는 이유가 있습니까? 클라이언트 측 포함에서 볼 수있는 주요 사용 시나리오는 정적 페이지 컨텐츠의 캐싱을 개선하는 것입니다. 16 개의 페이지가 모두 동일한 머리글과 바닥 글을 포함하는 경우 클라이언트 쪽 포함을 사용하면 첫 번째 페이지를로드하는 데 필요한 시간은 늘어나지 만 나머지 15 개를로드하는 시간은 줄어 듭니다. 포함이 가장 유용한 사용 사례는 정확하게 "포함"될 데이터가 정적이고 따라서 필요하지 않은 경우 일 것입니다.
supercat

10

그들은했다. <frameset>태그 가되었습니다 . 얼마 후 그들은 <iframe>태그 를 추가했습니다 .

초기 웹 서버의 대부분은 서버 측 포함을 지원 했으므로 동일한 기능을 프레임에서도 사용할 수 있다는 점에서 클라이언트 측 텍스트 포함은 필요하지 않은 것으로 생각되었습니다.


4
실제로 프레임이 포함과 다른 목적으로 사용되는 것은 아닙니다. 또한 특히 객체 세트 크기의 iframe에 대한 제한은 그 자리를 차지할 수 없었습니다.
Jé Queue

5
나는 동의하지 않는다-그것이 정확히 프레임이하는 것이라고 생각한다. 더 많은 HTML을 포함하지 않는 프레임은 무엇입니까?
Jaco Pretorius

5
프레임은 HTML을 프레임에 직접 포함하지 않고 포함합니다. 이것이 차이점입니다.
mbq

4
@Xepoch : ...와 함께 <iframe>. 즉 그것의 무엇 을 위해 . 그것은에서 정말 크게 다르지 않다 <div>overflow:auto;
greyfade

3
<iframe> 요소는 기본적으로 "지정된 html 문서를로드하고 여기에 붙입니다"라고 말합니다. 자바 스크립트 호출이 아닌 문서를 즉시로드하려면 ajax 대신 선택하십시오. 프레임은 HTML의 창 레이아웃이 아닙니다. Div, p, br-이들은 레이아웃에 사용되는 모든 요소입니다. 레이아웃에 프레임을 사용하지 마십시오 (그렇지 않아야합니다).
Jaco Pretorius

3

개체는 여전히 프레임에서 렌더링되며 "데이터"에 대한 DOM 액세스 권한이 없습니다. 몇 년 전에 개발자에게 제공된 것은 간단한 태그로 스 니펫을 포함시키는 방법입니다. 이 태그에 도메인 샌드 박스 제한이 있더라도 기능을 구획화하고 유지 관리를 개선하며 브라우저 캐싱을 활용하는 것이 매우 유용합니다.

이 작업을 수행하는 좋은 jquery 플러그인과 서버 측 스크립트가 많이 있다는 것을 알고 있지만 그러한 태그를 지원하지 않는 이유는 없습니다. IMO의 좋은 질문은 "클라이언트 측 포함 태그가없는 이유는 무엇입니까?"

jquery를 좋아한다면 좋은 클라이언트 측 include 스크립트가 있습니다 : inc : 매우 작은 클라이언트 측 include JavaScript jQuery 플러그인


당신의 대답은 머리에 못을 박은 것 같습니다. C의 #include와 같은 것을 생각하고 있습니까? 이것은 "클라이언트 측 포함"이 의미하는 것입니다. HTML 문서 내에 임의의 HTML 스 니펫 (전체 HTML 문서가 아닌)을 통합 문서 컨텐츠로 포함하는 기능입니다. 사전 구문 분석 단계가 아닌 HTML의 필수 기능으로 설계 될 수 있지만, 제안자의 <include src = "..."> 구문이 이에 적합합니다.
Stewart

지금 추가하는 문제는 이전 버전과의 호환성입니다. 물론, 이것이 원래 HTML 디자인에 포함되지 않은 이유를 설명하지는 않습니다.
Stewart

대체로 SGML / XML의 기능으로보다 일반적으로 설계되었을 수도 있습니다 ....
Stewart

2

당신이 시도 했습니까

<object  type="text/html" data="page.html" height="500" width="500">
What I see if that didn't work 
</object>

나는 그것이 대부분의 브라우저에서 구현되었다고 생각합니다.


시도해야합니다.
Jé Queue

2

<include>태그의 변형 은 HTML의 초기 역사 에서 실제로 고려 되었지만 결코 멀지 않았습니다.


1
그러나 <include> 태그의 의미는 오늘날의 frame / iframe / object의 의미와 유사합니다 . C의 #include처럼 텍스트 / 코드 또는 임의 태그의 스 니펫뿐만 아니라 html 문서 가 포함됩니다 .
Tomáš Pospíšek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.