2013-08-03 2 views
0

http, https 및 ftp와 같은 사람들이 내 웹 사이트에 다양한 링크를 입력 할 수있는 양식이 있습니다. 누군가가 "HTTP : stackoverflow.com"를 입력하면 "HTTPS : stackoverflow.com"및 "FTP : stackoverflow.com"이 같은 관점에서 이들을 렌더링 :내 외부 링크가 내부 링크로 렌더링되는 이유는 무엇입니까?

<ul> 
    @foreach (var link in Model.Keyword.References) 
    { 
     <li> 
      <a href="@link.Link" target="_blank">@link.Link</a> 
     </li> 
    } 
</ul> 

나는 다음과 같은 출력을 얻을 :

  • HTTP : stackoverflow.com
  • 은 https : stackoverflow.com
  • FTP : stackoverflow.com

이 잘 보이지만, 내가 "http : stackoverflow.com"을 가리키면 실제 링크는 "localhost : 1973/stackoverflow.com"입니다. 나는 HTTPS 및 FTP 링크를 가져 가면

나는 올바른 출력을 얻을 :는 HTTP 링크가 두 "슬래시"필요로 내가 발견

을 때 양식을 통해 제출하십시오. 그래서 "http :"대신 "http : //"를 얻습니다. https 및 ftp 링크가 이러한 여분의 슬래시를 필요로하지 않는 이유를 알고 싶습니다. 또한 사용자가 이러한 여분의 슬래시를 사용해야한다고 생각하지 않기 때문에 좋은 해결책을 알고 싶습니다.

+0

실제로 슬래시가 필요합니다. URL과 프로토콜을 구분합니다. –

+0

다음은 빠른 [link] (http://stackoverflow.com/questions/8756986/removing-localhost-url-in-asp-mvc)입니다. Btw // : 필수 항목입니다. – Nilesh

답변

0

URL의 슬래시는 항상 필요합니다. 브라우저가 잘못된 URL을 수정 한 것일 수 있습니다. https : stackoverflow.com을 브라우저의 주소 표시 줄에 넣으면 대부분의 브라우저에서 주소를 수정하려고 시도합니다.

0

좋은 해결책은 http : //가없는 도메인 만 받아 들여야한다고 생각합니다. "Example : 'www.somedomain.com'"을 보여주는 입력 아래에 작은 텍스트를 넣을 수 있으므로 사용자는 앞면의 프로토콜이 필요 없다는 것을 알 수 있습니다.

그런 다음 JQUERY/REGEX를 사용하여 실수로 누군가가 추가 할 수있는 프로토콜을 검증하고 제거 할 수 있습니다.

관련 문제