AJAX 요청의 상대 URL
Javascript는 왜 표준 HTML과 다른 상대 URL을 취급합니까?다음 URL을 생각해 보세요(또는 참조만 하면 됩니다).http://en.wikipedia.org/wiki/RomeFirebug 콘솔(또는 다른 Javascript 콘솔)을 열고 다음과 같이 입력합니다.
var x = new XMLHttpRequest();
x.open("GET", "foo", true);
x.send("bar");
내 시스템에서는 요청이 "http://en.wikipedia.org/wiki/foo"로 전송됩니다.URL의 "ROM"은 무시됩니다.URL("http://en.wikipedia.org/wiki/Rome/")에 후행 슬래시가 있는 동일한 요청은 "foo"를 전체 URL에 추가합니다.
이 때문에 Javascript에서 올바른 URL을 인코딩하는 것이 매우 어려워 보입니다.이 문제를 해결할 수 있는 Javascript 라이브러리가 있습니까?
(이전에도 비슷한 질문을 했습니다만, jQuery의 구체적인 질문입니다.이러한 질문도 있습니다.좀 더 라이브러리에 의존하지 않는 이 질문으로 더 나은 답변을 얻을 수 있기를 바랍니다.)
(가독성을 높이기 위해 추가)
상대적인 경로는 이렇게 작동해야 합니다.
현재 주소가 다음과 같다고 가정합니다.
절대: protocol://some.domain.name/dir1/dir2/filename
새 파일 이름 "foo"만 지정하면 동일한 프로토콜, 호스트 및 dir를 얻을 수 있으며 파일 이름만 변경됩니다.
상대: foo
절대: protocol://some.domain.name/dir1/dir2/foo
전체 경로 "/dir3/filename2"를 지정하면 프로토콜과 호스트 이름이 같지만 다른 경로를 사용합니다.
상대: /dir3/filename2
절대: protocol://some.domain.name/dir3/filename2
호스트 이름 "//another.domain.name/dir5/filename3"을 지정하여 동일한 프로토콜이지만 다른 호스트인 dir 및 파일 이름을 가져올 수도 있습니다.
상대: //another.domain.name/dir5/filename3
절대: protocol://another.domain.name/dir5/filename3
웹 서버는 지정된 URL이 파일이 아닌 디렉토리를 가리킬 경우 내부적으로 URL 끝에 /를 추가할 수 있습니다.
protocol://some.domain.name/somename
「somename」이 디렉토리인 경우, Web 서버가 그것을 변환하는 경우가 있습니다(리다이렉트 사용 가능).
protocol://some.domain.name/somename/
갱신하다
캐머런이 코멘트에서 말했듯이:참조에 대해서는 RFC 1808 섹션4의 스텝6 을 참조해 주세요.
일반적으로 http://code.google.com/p/js-uri/은 URL 조작을 위한 라이브러리이며, 특히 이러한 유형의 절대값에서 절대값으로 계산하기 위한 라이브러리인 것 같습니다.
new URI(potentiallyRelativeLink).resolve(new URI(window.location.href)).toString()
언급URL : https://stackoverflow.com/questions/4765740/relative-urls-in-ajax-requests
'source' 카테고리의 다른 글
| AngularJS는 모든 $http JSON 응답을 가로채다 (0) | 2023.02.26 |
|---|---|
| 반응 MUI로 TextField 구성 요소의 너비를 재정의하려면 어떻게 해야 합니까? (0) | 2023.02.26 |
| 「」의 삭제"「」의 삭제"「」의 삭제" ★★★★★★★★★★★★★★★★★」 ★★★★★★★★★★★★★★★★★」 ★★★★★★★★★★★★★★★★★」WordPress 시 word word word wordWord.. (0) | 2023.02.18 |
| Wordpress: PHP 치명적 오류: 정의되지 않은 함수 get_option() 호출 (0) | 2023.02.18 |
| 여러 번 호출되는 UseEffect (0) | 2023.02.15 |