programing

두 개의 슬래시로 시작하는 URI… 어떻게 동작합니까?

nasanasas 2020. 9. 3. 19:34
반응형

두 개의 슬래시로 시작하는 URI… 어떻게 동작합니까?


최근에 다음과 같은 코드 블록이 작동하는 것을 보았습니다 .

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

RFC 2396 (URI 구문) 및 RFC 2616 (HTTP 1.1)에 따르면 두 개의 슬래시로 시작하는 이러한 URI는 유효하지만 안타깝게도 RFC는 실제로이를 설명하지 않습니다.

누구든지 브라우저가 이러한 URI를 처리하는 방법을 설명하는 리소스를 알려줄 수 있습니까?


찾고있는 리소스는 RFC 3986 입니다.

섹션 4.2 및 섹션 5.4를 참조하십시오. 후자에서 인용 :

참조 해상도 예

잘 정의 된 기본 URI가있는 표현 내 :

    http://a/b/c/d;p?q

상대 참조는 다음과 같이 대상 URI로 변환됩니다.

  "g:h"           =  "g:h"
  "g"             =  "http://a/b/c/g"
  "./g"           =  "http://a/b/c/g"
  "g/"            =  "http://a/b/c/g/"
  "/g"            =  "http://a/g"
  "//g"           =  "http://g"
  "?y"            =  "http://a/b/c/d;p?y"
  "g?y"           =  "http://a/b/c/g?y"
  "#s"            =  "http://a/b/c/d;p?q#s"
  "g#s"           =  "http://a/b/c/g#s"
  "g?y#s"         =  "http://a/b/c/g?y#s"
  ";x"            =  "http://a/b/c/;x"
  "g;x"           =  "http://a/b/c/g;x"
  "g;x?y#s"       =  "http://a/b/c/g;x?y#s"
  ""              =  "http://a/b/c/d;p?q"
  "."             =  "http://a/b/c/"
  "./"            =  "http://a/b/c/"
  ".."            =  "http://a/b/"
  "../"           =  "http://a/b/"
  "../g"          =  "http://a/b/g"
  "../.."         =  "http://a/"
  "../../"        =  "http://a/"
  "../../g"       =  "http://a/g"

즉, 기본 URI가 http://a/b/c/d;p?q이고 사용 //g하는 경우 상대 참조가로 변환됩니다 http://g.


이들은 프로토콜 상대 URL을. 현재 프로토콜을 유지하면서 주소를 가리 킵니다.

이 표기법은 종종 "혼합 콘텐츠"문제 ( 동일한 HTTPS 페이지의 리소스 httphttps리소스에 대해 불평하는 IE 경고 메시지)를 방지하는 데 사용됩니다 .

업데이트 : RFC 3986의 공식 문서 :

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


프로토콜에 독립적 인 URL입니다. 웹 페이지가 https에서 제공되는 경우 요청은 https를 사용하고 http 인 경우 http를 사용합니다.

Paul Irish는이를 상용구 코드에 포함시켜 대중화 한 것 같습니다.


http 또는 https와 독립적 일뿐 만 아니라 file , ftp 등도 있다는 점에 유의하십시오 .

, localhost의 브라우저에서 직접 .htm 파일 을 열면 브라우저가 // 파일 프로토콜로 해석 되고 페이지가 작동하지 않습니다. Electron, PhoneGap 등과 같은 도구를 사용하는 "네이티브"앱으로 압축 된 웹 사이트에서 문제를 일으킬 수 있습니다.

예:

<script src="//mywebsite.com/resource.js"></script>

<script src="file://mywebsite.com/resource.js"></script>

참고 URL : https://stackoverflow.com/questions/4071117/uri-starting-with-two-slashes-how-do-they-behave

반응형