Bạn không thể thay đổi bất kỳ phần nào của quyền (ví dụ: các host: phần cổng) trong URL tương đối. Xem thuật toán được mô tả trong section 5.2.2 của RFC 3986 để xem cách URL tương đối được diễn giải. Điều quan trọng cần lưu ý là quyền hạn được sao chép đơn giản từ URL cơ sở hoặc từ URL đang được giải quyết và cấu trúc của cơ quan không bao giờ được diễn giải. Điều này ngụ ý rằng bạn không thể thay đổi bất kỳ phần nào của nó, bao gồm cả phần cổng.
Dưới đây là các thuật toán mã giả hay sao chép từ 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;
Nguồn
2011-11-29 21:00:26
Tôi không nghĩ rằng bạn có thể. Cổng có hiệu quả là một phần của tên miền trong ngữ cảnh này. Bằng cách chỉ định tên miền không có cổng (không sử dụng liên kết tương đối), về cơ bản bạn cung cấp miền _different_. –
Xem thêm http://stackoverflow.com/q/6016120/60075 –