私たちはすべて相対パスをよく知っています。./images/hello.jpg
への相対パスはhttp://www.domain.com/hey
からhttp://www.domain.com/hey/images/hello.jpg
にリンクしています。相対パスですが、ポートのためのものですか?
問題:http://www.domain.com/hey
にいるときの相対パスをhttp://www.domain.com:1234
に設定するにはどうすればよいですか?
私たちはすべて相対パスをよく知っています。./images/hello.jpg
への相対パスはhttp://www.domain.com/hey
からhttp://www.domain.com/hey/images/hello.jpg
にリンクしています。相対パスですが、ポートのためのものですか?
問題:http://www.domain.com/hey
にいるときの相対パスをhttp://www.domain.com:1234
に設定するにはどうすればよいですか?
これは、JavaScriptを使用してwindow.location.port
プロパティを設定することで実現できます。相対URLで:(ポート一部すなわちホスト)
<a href="#" onclick="javascript:window.location.port=8080">go</a>
簡易回答:。 ホストが変更された場合、絶対パスを使用する必要があります。
あなたが権威のどの部分を変更することはできません。 相対URLの解釈方法については、section 5.2.2のRFC 3986に記載されているアルゴリズムを参照してください。注目すべき重要なことは、権限は単にベースURLからコピーされるか、解決されるURLからコピーされ、権限の構造は決して解釈されないということです。これは、ポート部分を含むその部分を変更できないことを意味します。ここで
がRFCからコピーした擬似コードにおけるアルゴリズムです:
-- The URI reference is parsed into the five URI components
--
(R.scheme, R.authority, R.path, R.query, R.fragment) = parse(R);
-- A non-strict parser may ignore a scheme in the reference
-- if it is identical to the base URI's scheme.
--
if ((not strict) and (R.scheme == Base.scheme)) then
undefine(R.scheme);
endif;
if defined(R.scheme) then
T.scheme = R.scheme;
T.authority = R.authority;
T.path = remove_dot_segments(R.path);
T.query = R.query;
else
if defined(R.authority) then
T.authority = R.authority;
T.path = remove_dot_segments(R.path);
T.query = R.query;
else
if (R.path == "") then
T.path = Base.path;
if defined(R.query) then
T.query = R.query;
else
T.query = Base.query;
endif;
else
if (R.path starts-with "/") then
T.path = remove_dot_segments(R.path);
else
T.path = merge(Base.path, R.path);
T.path = remove_dot_segments(T.path);
endif;
T.query = R.query;
endif;
T.authority = Base.authority;
endif;
T.scheme = Base.scheme;
endif;
T.fragment = R.fragment;
この問題についての決定的な回答をありがとう! –
単にあなたがhref属性に書くことができます。
/:port/[path/]file.ext
私はあなたができるとは思いません。この文脈では、ポートは実質的にドメイン名の一部です。ポートなしで(相対リンクを使用せずに)ドメイン名を指定することによって、基本的に_different_ドメインを提供します。 –
http://stackoverflow.com/q/6016120/60075 –