URL không có “http | https”


89

Tôi vừa học được từ một đồng nghiệp rằng việc bỏ qua phần "http | https" của URL trong liên kết sẽ khiến URL đó sử dụng bất kỳ lược đồ nào mà trang đang sử dụng.

Vì vậy, ví dụ: nếu trang của tôi được truy cập tại http://www.example.com và tôi có một liên kết (để ý dấu '//' ở phía trước):

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

Liên kết đó sẽ đi đến http://www.google.com .

Nhưng nếu tôi truy cập trang tại https://www.example.com với cùng một liên kết, nó sẽ chuyển đến https://www.google.com

Tôi muốn tìm kiếm trực tuyến để biết thêm thông tin về điều này, nhưng tôi gặp khó khăn khi nghĩ ra một cụm từ tìm kiếm phù hợp. Nếu tôi tìm kiếm "URL không có HTTP", các trang được trả về là về các url có dạng sau: "www.example.com", đây không phải là thứ tôi đang tìm.

Bạn có gọi đó là một URL không có mưu mô không? Một URL không có giao thức?

Điều này có hoạt động trên tất cả các trình duyệt không? Tôi đã thử nghiệm nó trong FF và IE 8 và nó hoạt động ở cả hai. Đây là một phần của tiêu chuẩn hay tôi nên thử nghiệm nhiều trình duyệt hơn?



1
Để tham khảo (vì bạn đã hỏi cụm từ nào để tìm kiếm), tìm kiếm trên Google đưa tôi đến câu hỏi ban đầu của StackOverflow là: "url tuyệt đối không có giao thức"
David

bạn không chỉ định xem đó là http hay https để trình duyệt quyết định cho bạn bằng cách lấy trang cuối cùng với giả định rằng liên kết đến từ cùng một trang.
raym0nd

Cảm ơn David, liên kết đến bản sao đã trả lời tất cả các câu hỏi của tôi
topher-j

1
@David: Nói chính xác, bạn sẽ không gọi nó là URL tuyệt đối nếu nó không có giao thức; nó là một URL tương đối.
Gumbo

Câu trả lời:



15

Nó được gọi là tham chiếu đường dẫn mạng (phần bị thiếu được gọi là schemehoặc protocol) được định nghĩa trong RFC3986 Phần 4.2

4.2 Tham chiếu tương đối

Tham chiếu tương đối tận dụng cú pháp phân cấp (Phần 1.2.3) để thể hiện một tham chiếu URI liên quan đến không gian tên của một URI phân cấp khác.

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

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

URI được tham chiếu bằng tham chiếu tương đối, còn được gọi là URI đích, thu được bằng cách áp dụng thuật toán phân giải tham chiếu của Phần 5.

Một tham chiếu tương đối bắt đầu bằng hai ký tự gạch chéo được gọi là tham chiếu đường dẫn mạng (mỏ nhấn mạnh); những tài liệu tham khảo như vậy hiếm khi được sử dụng. Một tham chiếu tương đối bắt đầu bằng một ký tự gạch chéo được gọi là tham chiếu đường dẫn tuyệt đối. Tham chiếu tương đối không bắt đầu bằng ký tự gạch chéo được gọi là tham chiếu đường dẫn tương đối.

Phân đoạn đường dẫn có chứa ký tự dấu hai chấm (ví dụ: "this: that") không thể được sử dụng làm phân đoạn đầu tiên của tham chiếu đường dẫn tương đối, vì nó sẽ bị nhầm với tên lược đồ. Một phân đoạn như vậy phải được đặt trước bởi một phân đoạn chấm (ví dụ: "./this:that") để tạo tham chiếu đường dẫn tương đối.


// không thể được sử dụng trong thẻ cơ sở trong html. Tôi đã đặt <base href = "// abc.com/" và url hình ảnh tương đối <img src = "/ img / logo.jpg>. Tuy nhiên, khi mở trên trình duyệt, liên kết hình ảnh sẽ trở thành tệp: /// abc. com / img / logo.jpg. Có cách giải quyết nào không?
Scott Chu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.