Подтвердить что ты не робот

URL-адрес, начинающийся с//valid?

Мы можем увидеть много страниц HTML, используя src="//example.com/myjavascript.js", чтобы включить .js, и пусть браузер использует http:///https:// в зависимости от текущей схемы URL-адреса страницы.

Является ли это допустимым URI?

4b9b3361

Ответ 1

Да, это действительно верно. Это "относительный к схеме" или "относительный к протоколу" URI. В спецификации с самого начала. Очень полезно иметь дело с проблемами http/https.

Прочитайте намного лучшее описание и предостережения: допустимо ли заменить http://на//в <script src= "http://...">?

Несколько моментов, которые следует иметь в виду:

  • Есть некоторые незначительные проблемы в IE 7 и 8 с двойной загрузкой
  • Если вы просматриваете HTML-страницу из файла, браузер заменит схему на file://, и не будет загружать ваш файл JS с сервера, как это было бы с полным URL-адресом, начинающимся с http:// или https://.

Редактировать с современными методами webdev:

Ответ 2

В качестве предупреждения... мы столкнулись с проблемами с этой методологией, которые НЕ поддерживаются в Internet Explorer при использовании внутри тега HTML BASE (подтвержденные IE8 и 9, не тестировали других, прежде чем исправлять проблему).

После внедрения SSL на веб-сайте мы изначально обновили теги BASE в приложении, чтобы просто ссылаться на "//www.mydomain.com": но шаблоны страниц сломались (только в IE) на всех сценариях, которые НЕ жить в корне сайта. Имеет смысл, поскольку тег BASE не собирал таблицу стилей или другие относительно связанные ресурсы, которые предполагали, что на них ссылаются от root, а не от вложенного местоположения.

Так как BASE URI был нашим собственным доменом, мы исправили проблему, установив значение тега BASE в значение " https://www.mydomain.com". Независимо от того, просматривает ли клиент сайт в режиме или в режиме SSL, по крайней мере, он будет работать в кросс-браузере и может ВСЕГДА найти его содержимое - и, постоянно заставляя https, мы гарантируем, что мы не получим никакого несоответствия содержания предупреждения в процессе, установив путь BASE к http-адресу при просмотре страницы с помощью https.

Ответ 3

Это действительно действительно, и я только что научился этому с трудом! Мы нарушили функцию настройки, поэтому вы всегда должны проверять URL-адрес, подобный этому (в .NET): Обратите внимание:

  • Белые пространства (Trim)
  • "относительная схема" URI (UriKind.RelativeOrAbsolute)

    public bool IsValidUrl(string resourceUrl)
    {
        Uri uri;
        if (Uri.TryCreate(resourceUrl.Trim(), UriKind.RelativeOrAbsolute, out uri))
        {
            return uri.IsWellFormedOriginalString();
        }
    
        return false;
    }