파일 URL이 3 슬래시로 시작하는 이유는 무엇입니까?


182

HTTP는 두 개의 슬래시로 시작합니다. 예 http://example.com.

FTP도 마찬가지입니다. 예 ftp://example.com.

그러나 "URL"파일은 세 개의 슬래시로 시작합니다. 예 : 크롬을 사용하여 pdf 파일을 읽으면 URL은입니다 file:///D:/Desktop/Book.pdf.

파일 URL에 세 개의 슬래시가 사용되는 이유무엇 입니까?


5
Windows 용 Opera는 file://localhost/D:/Desktop/자동으로 확장합니다 .

답변:


14

다른 사람들이 언급했듯이 파일 스키마는 "file : // <host> / <path>"형식입니다. 대부분의 브라우저에는 슬래시가 두 개뿐이므로 문제가 없습니다.

트리플 슬래시와 "localhost"키워드는 모든 것이 동일하므로 유효한 URI / URL 구문을 준수하기 위해서만 존재합니다. 파일 스키마의 맥락에서 호스트는 명시적인 전송 프로토콜이나 서버 문서 경로없이 파일 시스템에서 직접로드되므로 의미가 없습니다. HTTP가 아니기 때문에 이론적으로 여러 로컬 가상 호스트를 설정할 수있는 표준 웹 서버에서로드 할 수 없습니다. 브라우저는 단지 "file : /// volumes / foo"와 같은 볼륨 이름을 사용하기 때문에 기술적으로 다른 "호스트"인 표준 네트워크 볼륨에서로드 할 수 없습니다. 마지막으로 "file : //example.com/some/file"과 같은 시도는 작동하지 않습니다. 외부 호스트를 지원해야 할 이유가있을 수 있지만 생각할 수는 없습니다.

IETF는 현재 트리플 슬래시 요구 사항을 제거하기 위해 변경 사항을 작성하고 있지만이 초안에는 file:c|/pathand 및 file://///host.example.com/path.

https://tools.ietf.org/html/draft-ietf-appsawg-file-scheme-03

"3.이 사양은 비 로컬 파일에 액세스하기위한 메커니즘을 정의하거나 금지하지 않습니다."


1
초안은 2017 년에 RFC 8089가 되었으며 여기에는 여전히 귀하의 견적이 포함되어 있습니다.
ComFreek

252

전체 구문은 file://host/path입니다.

호스트가 localhost인 경우 생략하여 결과를 얻을 수 있습니다 file:///path.

RFC 1738 – URL (Uniform Resource Locator)을 참조하십시오 .

파일 URL의 형식은 다음과 같습니다.

file://<host>/<path>

[…]

특별한 경우, <host>문자열 "localhost"또는 빈 문자열 일 수 있습니다. 이것은 'URL이 해석되는 기계'로 해석됩니다.


3
쿨, 나는이 질문에 대한 답을 RFC 표준으로 기대하지 않았습니다!
Pacerier

33
@Pacerier 인터넷과 관련이있는 거의 모든 것은 RFC에 의해 설명 될 수 있습니다 (그들은 반드시 "표준"일 필요는 없지만 그대로 채택 될 수 있습니다).
slhck

5
Tim Berners Lee는 모든 URL에있는 2 개의 슬래시에 대해 사과했습니다. news.bbc.co.uk/2/hi/technology/8306631.stm
Peter

7
localhost다른 프로토콜에서도 생략 할 수 있습니까 file://? 아니면 작동 합니까?
Agos November

3
Firefox는이 표준`file : // test / C : \`를 실제로 따르지 않습니다.`file : /// C : \`와 동일하게 작동하며`http : /// test`는 유효하지 않은 URL을 제공합니다. 오류
Earlz

27

데니스은을 분리하는 데 필요한 3 슬래시 설명했다 host으로부터를 path하지만, 다른 두 사람은 훨씬 더 재미있다 ...

그것들은 URL 구문에 쓸모없고 다소 임의적 인 것으로 밝혀졌습니다. 월드 와이드 웹의 발명자이자 많은 표준 ( Dennis가 연결 한 RFC 포함) 저자 인 Tim Berners-Lee 는 2009 년 인터뷰에서 '이중 슬래시'사용에 대해 애도했습니다.

Berners-Lee 씨는 당시의 프로그램 컨벤션이 실제로 필요하지 않은 것으로 나타 났지만 이중 슬래시가 설명했다. 그는 모든 종이와 나무를 보아 사람들이 종이에 그 슬래시를 쓰거나 타이핑 할 필요가 없다면 구원받을 수 있다고 말했다. 브라우저 주소 상자에 시간.

http://bits.blogs.nytimes.com/2009/10/12/the-webs-inventor-regrets-one-small-thing/

그래서, 후 18 년 전 선견지명에있는 작은 (그리고 특색) 경과에 대한 저장 파일의 URL은 쉽게 수 있었다 file:/D:/Desktop/Book.pdf보다는 file:///D:/Desktop/Book.pdf.

귀하의 질문에 대답하기 위해 URL에 3 개의 슬래시가있는 이유는 없습니다.


업데이트 : @ComFreek가 주석에서 지적했듯이 2017 년 file:/D:/...현재 위 의 예가 유효합니다! RFC 8089 덕분에 이전 표준에서이 수정 사항을 구체적으로 호출합니다.

[RFC1738]의 정의에 따르면 파일 URL은 항상 "file : //"토큰으로 시작하고 뒤에는 선택적으로 공백 인 호스트 이름과 "/"가옵니다. 섹션 2에 제공된 구문은 이중 슬래시 "//"를 포함하여 전체 권한 구성 요소를 선택 사항으로 만듭니다.

살아있는 시간.


2
TimBL은 또한 그의 FAQ를
Molomby

2
말할 것도없이 2 바이트를 http:example.com대신 사용하여 저장할 수 있다는 것은 말할 것도 http://example.com없지만 많이 보이지는 않지만 합쳐집니다. Google은 하루에 수백만 건의 검색을 받습니다 . 한 페이지에 몇 개의 링크가 있습니까? 적어도 20. 즉, 백만 회 검색의 경우 슬래시가 필요하지 않은 경우 20MB의 대역폭을 절약 할 수 있습니다.
Cole Johnson

1
@ColeJohnson-프로토콜 부분도 생략 할 수 있다는 것을 알고 있습니까? 따라서 http를 통해 전송 된 문서에서 http://example.com와 같이 링크 될 수 있습니다 //example.com. 프로토콜 상대 URL 이라고하며 모든 브라우저가 지원합니다.
Molomby 2016 년

나는 그것들을 잘 알고 있지만 개인적으로 CSS에서만 사용합니다. HTML을 작성할 때 프로토콜도 사용합니다. 진짜 이유는 없습니다. 몇 년 전에 HTML5 + CSS3가 처음으로 "큰"것이 되었기 때문에 내가 본 거의 모든 사이트가 그와 같았습니다.
Cole Johnson

1
귀하의 답변과는 달리 RFC 8089 (2017 년부터)에 file:/D:/Desktop/Book.pdf따른 유효한 파일 URI 는 파일 URI 측면에서 RFC 1738 (1994) 을 대체했습니다 .
ComFreek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.