2012-01-04 38 views
6

Xin chào tôi đang xây dựng một thứ gì đó giống như một trình duyệt web trong C#. Trong nghiên cứu của tôi tôi đã gặp một vấn đề là tôi cần phải xác định nếu một liên kết là nội bộ hoặc bên ngoài, trong nước hoặc ngoài nước. Vì vậy, tôi cần thiết để tạo ra một chức năng để làm công việc cho tôi. Vì vậy, tôi đã đưa ra các chức năng sau đây nhưng tôi không chắc chắn nếu nó algorythm tốt nhất có thể để hoàn thành nhiệm vụ đó. Vì vậy, tôi muốn ý kiến ​​của bạn về vấn đề này.Kiểm tra xem liên kết có nằm trong hoặc ngoài

Tôi giả sử rằng các liên kết không có http: // hoặc https: // ở phía trước liên kết là nội bộ và nếu tôi có miền http://www.blahblah.com thì một liên kết như kiểm tra vẫn phải là nội bộ mặc dù thực tế là nó có http : // ở phía trước, nhưng một liên kết như http://www.somethingelse.com/?var1=http://www.blahblah.com/test là sto bên ngoài, tôi chỉ kiểm tra các chữ cái đầu tiên.

private Boolean checklinkifinternal(String link) 
     { 
      Boolean isinternal = false; 

      if (link.IndexOf("http://") == 0 || link.IndexOf("https://") == 0) 
      { 
       //Then probably external 
       if (link.IndexOf("http://" + UrlName) == 0 || link.IndexOf("https://" + UrlName) == 0 || link.IndexOf("http://www." + UrlName) == 0 || link.IndexOf("https://www." + UrlName) == 0) 
       { 
        isinternal = true; 
       } 
      } 
      else 
      { 
       isinternal = true; 
      } 

      return isinternal; 
     } 
+0

làm thế nào bạn có thể xác định xem nó nằm ngoài/nội bộ bằng giao thức mà nó đang sử dụng ...? – Shai

+3

Điều gì về http://127.0.0.1 hoặc http://192.168.1.1 cả hai đều là nội bộ nhưng sẽ vượt qua như bên ngoài – Lloyd

+0

thực sự didnt nghĩ rằng Lloyd – themis

Trả lời

6
Uri.Compare(new Uri("google.de"), new Uri("Google.de"), UriComponents.Host, UriFormat.SafeUnescaped, StringComparison.CurrentCulture); 

đây là những gì tôi sẽ nói từ đỉnh đầu của tôi :)

+0

như dành cho nội bộ/định nghĩa bên ngoài. tôi nghĩ rằng bạn đề cập đến nó như là "tôi vẫn còn trên cùng một trang web hiện tại như tôi đã trước" và không "hiện máy chủ này có 2 ips dẫn đến cùng một trang web" –

+0

thanx tôi sẽ kiểm tra này – themis

+0

Volker Manuel có tôi nghĩ rằng điều này là một thực tế có thể. Nếu có 1 tên miền phù hợp với hai ips phải là cùng một trang. Cân bằng tải là một ví dụ về thực tế đó? – themis

1

Nó phụ thuộc. Nếu bạn đang ở trên một URI http, có liên kết đến một URI https được tính là một liên kết nội bộ ngay cả khi tên miền giống nhau không? (Và ngược lại.) Bạn sẽ phải quyết định.

Ngoài ra, thuật toán của bạn không sử dụng hệ thống tệp cục bộ (sử dụng tệp: //).

+0

có bạn là chính xác, thậm chí thogh trong tập tin: //test.zip không phải là một cái gì đó tôi nên crowl nhưng tôi không cần phải xử lý nó trong một số cách – themis

Các vấn đề liên quan