Codegolf — Перенаправить Http-Ссылки На Https С Помощью Javascript

  • Автор темы TeraTeFeabeno
  • Обновлено
  • 19, Oct 2024
  • #1

Каков кратчайший способ защитить сайт с помощью Javascript?

Я новичок в игре в гольф на коде, и это то, что я придумал на данный момент. Могу поспорить, что это можно улучшить:

Испытание:

Создайте скрипт, который перенаправляет

 
 
 
 
 with(location)protocol='https'+href[4]
 
to (l=location)[p='protocol'][5]||(l[p]='https') с наименьшим количеством байтов кода

Попытки:

Исходный код (150 БАЙТОВ!):

l=location;l["protocol"][5]||(l["protocol"]="https")

Мой код на данный момент (68 байт):

var l=location;':'==l.protocol[4]&&(l.href=l.href.replace(':','s:'))

Обновлено благодаря @mypronounismonicareinstate (52 байта):

if (window.location.protocol != "https:") { window.location.href = "https:" + window.location.href.substring(window.location.protocol.length); }

Спасибо @arnauld (45 байт):

https://

Это работает благодаря @anderskaseorg (38 байт):

http://

Однако этот последний ответ не будет широко использоваться на реальном сайте.

Можно ли это минимизировать еще больше?

#код-гольф #советы #javascript

TeraTeFeabeno


Рег
13 May, 2004

Тем
90

Постов
183

Баллов
643
  • 26, Oct 2024
  • #2

39 38 байт

 httpss 

Как это работает

  • Если https starts with http , это присваивает httpss .
  • Если location.protocol = 'httpss' starts with https: , это присваивает location.href . According to the спецификация, это не должно иметь никакого эффекта, потому что location.protocol = 'https:' is neither http: ни location.href . Firefox obeys this specification. Chrome seems to try to find an external app to open the with(location)protocol='https'+href[4] схема (ошибка).
 

Alenka_13


Рег
24 Aug, 2011

Тем
80

Постов
201

Баллов
631
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно