2010-04-05 3 views
25

Có sự nhất quán và/hoặc tiêu chuẩn về cách trình duyệt gửi url đến một máy chủ có liên quan đến dấu gạch chéo không?Trình duyệt web có luôn gửi dấu gạch chéo sau tên miền không?

Có nghĩa là, nếu tôi nhập http://example.com vào thanh địa chỉ của trình duyệt web, trình duyệt có giả sử thêm dấu gạch chéo (http://example.com/) hay không?

Trả lời

0

Theo như giao thức được đề cập, http://example.com/somethinghttp://example.com/something/ hoàn toàn khác nhau. Một số máy chủ có thể chuyển hướng bạn từ một đến khác nếu nó được thực hiện theo cách như vậy.

Đối với tên miền thuần túy, nó luôn gửi yêu cầu kết thúc bằng dấu gạch chéo. (Tên miền không được bao gồm trong phần đường dẫn của yêu cầu HTTP, giống như Greg Hewgill và những người khác đã viết. Tuy nhiên, nó được bao gồm trong các tiêu đề.)

Bạn có thể kiểm tra bằng công cụ như Fiddler hoặc WireShark.

+0

này là không chính xác. '/ something /' khác với '/ something' theo nghĩa HTTP. http://googlewebmastercentral.blogspot.com.es/2010/04/to-slash-or-not-to-slash.html – Ryall

+0

@Ryall đã chỉnh sửa câu trả lời của tôi để làm rõ. – Venemo

28

Yêu cầu HTTP được gửi từ trình duyệt tới máy chủ không bao gồm tên miền, chỉ phần "đường dẫn" (bắt đầu từ dấu gạch chéo đầu tiên sau tên miền). Vì đường dẫn không được để trống, nên / sẽ được gửi trong trường hợp đó.

Một yêu cầu GET mẫu cho thư mục gốc của một trang web có thể là:

 
GET/HTTP/1.0 

Các / trên không thể được bỏ qua.

+1

Để làm rõ điều này, tên miền được gửi trong tiêu đề 'Host' (chỉ HTTP 1.1). – jholster

+0

Vì vậy, điều bạn đang nói là ngay cả khi bạn có đường dẫn trống, URL được đảm bảo có dấu gạch chéo? – Hank

+3

@Cảm ơn: Điều tôi đang nói là * nếu * bạn có một đường dẫn trống, một '/' được gửi đi. Điều này không nói gì về dấu gạch chéo nếu phần đường dẫn * không * trống (trong trường hợp đó, trình duyệt sẽ gửi chính xác nội dung trên thanh URL, nhưng máy chủ có thể chọn chuyển hướng trình duyệt trong phản hồi của nó). –

9

Lưu ý rằng đó là một vấn đề very different khi URL có một yếu tố đường dẫn:

http://example.com/dir 

là một URL khác hơn

http://example.com/dir/ 

và có thể trên thực tế chứa nội dung khác nhau, và có một xếp hạng công cụ tìm kiếm khác nhau.

+0

đây là một điểm tốt. Bạn nên kết thúc url bằng "/" –

+3

@Claudio, một số tham chiếu? – jholster

+0

@Yaggo: hãy xem google "url dấu gạch chéo". Tôi không nhớ một nơi mà tôi đã đọc nó, xin lỗi anh bạn. –

15

Như RFC 2616 nói:

3.2.2 http URL

Các "http" chương trình được sử dụng để xác định vị trí tài nguyên mạng thông qua HTTP
giao thức. Phần này xác định cú pháp cụ thể của và
ngữ nghĩa cho URL http.

http_URL = "http:" "//" máy chủ [":" cổng] [abs_path ["?" truy vấn]]

Nếu cổng trống hoặc không được cung cấp, cổng 80 được giả định. Ngữ nghĩa
là tài nguyên được xác định là nằm tại máy chủ đang nghe Kết nối TCP trên cổng đó máy chủ và Yêu cầu-URI cho tài nguyên là abs_path (mục 5.1.2). Việc sử dụng địa chỉ IP trong các URL NÊN nên tránh bất cứ khi nào có thể (xem RFC 1900 [24]).Nếu abs_path không có trong URL, nó PHẢI được cung cấp dưới dạng "/" khi được sử dụng làm Yêu cầu-URI cho tài nguyên (phần 5.1.2). Nếu proxy nhận được tên máy chủ không phải là tên miền hoàn toàn đủ điều kiện , nó có thể thêm tên miền của mình vào tên máy chủ lưu trữ mà nó nhận được. Nếu một proxy nhận được tên miền đủ điều kiện, proxy KHÔNG ĐƯỢC thay đổi tên máy chủ lưu trữ.

Read more: http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGbpjYWa

5.1.2 Yêu cầu-URI
...
Ví dụ, một khách hàng có nhu cầu lấy lại tài nguyên trên trực tiếp từ máy chủ nguồn gốc sẽ tạo ra một TCP kết nối với cổng 80 của máy chủ "www.w3.org" và gửi các dòng:

GET /pub/WWW/TheProject.html HTTP/1.1 
    Host: www.w3.org 

, tiếp theo là phần còn lại của yêu cầu . Lưu ý rằng đường dẫn tuyệt đối không được để trống; nếu không có mặt hàng nào trong số URI gốc, thì PHẢI được cấp làm "/" (gốc máy chủ).

Read more: http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGcaRbqU