"http | https"가없는 URL


89

링크에서 URL의 "http | https"부분을 생략하면 해당 URL이 해당 페이지에서 사용하는 스키마를 사용하게된다는 것을 동료로부터 방금 배웠습니다.

예를 들어, 내 페이지가 http://www.example.com 에서 액세스되고 링크가있는 경우 (앞에 '//'표시) :

<a href="https://www.google.com">Google</a>

해당 링크는 http://www.google.com으로 이동합니다 .

나는의 페이지에 액세스하지만 https://www.example.com 같은 링크, 그것은에 갈 것이다 https://www.google.com

이에 대한 자세한 정보를 온라인에서 찾고 싶었지만 좋은 검색 구문을 생각하는 데 어려움이 있습니다. "HTTP가없는 URL"을 검색하면 반환 된 페이지는 "www.example.com"형식의 URL에 대한 것입니다. 이것은 제가 찾고있는 것이 아닙니다.

스키마없는 URL이라고 부를 수 있습니까? 프로토콜이없는 URL?

모든 브라우저에서 작동합니까? FF와 IE 8에서 테스트했으며 둘 다에서 작동했습니다. 이것은 표준의 일부입니까, 아니면 더 많은 브라우저를 테스트해야합니까?



1
참고로 (검색 할 용어를 물었 기 때문에) 원래 StackOverflow 질문에 대한 Google 검색은 "프로토콜없는 절대 URL"이었습니다.
David

http 또는 https인지 지정하지 않으므로 브라우저는 링크가 동일한 페이지에서 왔다고 가정하여 마지막 페이지를 가져와 결정합니다.
raym0nd

감사합니다 David, 중복 링크가 내 모든 질문에 답했습니다
topher-j

1
@David : 정확히 말하자면 프로토콜이 없다면 절대 URL이라고 부르지 않을 것입니다. 오히려 상대 URL입니다.
Gumbo

답변:



15

그것은 호출 네트워크 경로 참조 (이라고 누락 부분 scheme또는 protocol) RFC3986 4.2 절에 정의 된

4.2 상대 참조

상대 참조는 계층 적 구문 (섹션 1.2.3)을 이용하여 다른 계층 적 URI의 이름 공간에 상대적인 URI 참조를 표현합니다.

  relative-ref  = relative-part [ "?" query ] [ "#" fragment ]

  relative-part = "//" authority path-abempty
                / path-absolute
                / path-noscheme
                / path-empty

대상 URI라고도하는 상대 참조가 참조하는 URI는 섹션 5의 참조 확인 알고리즘을 적용하여 얻습니다.

두 개의 슬래시 문자로 시작하는 상대 참조를 네트워크 경로 참조 (강조 내 것)라고합니다. 이러한 참조는 거의 사용되지 않습니다. 단일 슬래시 문자로 시작하는 상대 참조를 절대 경로 참조라고합니다. 슬래시 문자로 시작하지 않는 상대 참조를 상대 경로 참조라고합니다.

콜론 문자 (예 : "this : that")를 포함하는 경로 세그먼트는 스킴 이름으로 오인 될 수 있으므로 상대 경로 참조의 첫 번째 세그먼트로 사용할 수 없습니다. 이러한 세그먼트는 상대 경로 참조를 만들기 위해 점 세그먼트 (예 : "./this:that")가 선행되어야합니다.


// html의 기본 태그에는 사용할 수 없습니다. <base href = "// abc.com/"과 상대 이미지 URL <img src = "/ img / logo.jpg>를 설정했는데 브라우저에서 열면 이미지 링크가 file : /// abc가됩니다. com / img / logo.jpg. 해결 방법이 있습니까?
Scott Chu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.