Объедините явную спецификацию протокола с относительным URL - PullRequest
2 голосов
/ 09 августа 2010

У меня есть страница, доступ к которой осуществляется через HTTP.Эта страница ссылается на другую страницу на том же сервере, используя HTTPS.Каков самый элегантный способ использования HTML и / или Javascript для принудительного перехода на HTTPS при использовании относительного URL-адреса?

В принципе, я хочу противоположность относительного протокола протокола ,Я хочу явно указать HTTPS БЕЗ жесткого кодирования имени хоста в URL.

Я работаю над большим устаревшим сайтом, поэтому идеально подходит решение с использованием ненавязчивого JavaScript с минимальными изменениями в существующей разметке.

Я понимаю, что применение HTTPS лучше выполнять на странице destination , но в данном случае это не вариант.

Ответы [ 2 ]

2 голосов
/ 09 августа 2010
$("a").each(function () { 
    this.href = "https://" + window.location.host + this.pathname + this.search + this.hash;
});

Вы можете предоставить более конкретный селектор, чтобы убедиться, что он не испортит ссылки, которые вы не намеревались изменить, но я оставляю это на ваше усмотрение, поскольку вы знаете требования.

0 голосов
/ 09 августа 2010

Я думаю, вам придется самостоятельно создать URL из частей на window.location.

var path = anchor.href;

var httpsUrl = "https://" + 
  window.location.host + 
  (path.charAt(0) === '/' ? path : window.location.pathname + '/' + path);

или что-то в этом роде (особенно если есть параметры и т. Д.).

edit - было отмечено, что современные браузеры будут возвращать полный URL-адрес при доступе к значению "href", что делает решение этой проблемы еще проще в этих случаях (так как вам просто нужно исправитьпрефикс протокола).(Спасибо @Daniel!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...