Я написал HTTP-сервер, который принимает определённый GET-запрос и посылает клиенту определённый ответ. Все остальные запросы игнорирует (возвращает код 400). Запускаю я его на своём компе с белым IP.
Потом я на JS написал для него клиент. Локально всё работает, но при деплое на гитхаб перестаёт работать. Не может подключиться к серверу (fetch
не работает). Выдаёт ошибку mixed content
. Думаю, вы лучше меня понимаете, что это значит. Мой сервер должен быть HTTPS
-ным. А для этого надо сгенерировать какие-то самоподписанные сертификаты. Погуглил, но нифига не понял. Можете объяснить на пальцах, что это значит?
Вот пример какого-то сервера:
https://neohope.com/2013/05/21/sslsocket-c-part1/
но нет инструкции для тупых, как сгенерировать нужный сертификат
Ещё как-то давно видел видос, как мужик писал онлайн игру на JS на веб-сокетах. Там он тоже сервер писал. Но я не вдавался в подробности. Посмотрел и забыл.
Что такое веб-сокеты? Это аналог обычных сокетов на JS? Может при их использовании не будет ошибки mixed content
?
Зачем самоподписанные? Lets Encrypt бесплатный.
Объясните на пальцах, в общих чертах, что нужно сделать.
Следовать инструкциям чтоб получить сертификат )
Там много вариантов, самый простой видимо Certbot.
ACME Client Implementations - Let's Encrypt
И еще домен нужен, для просто IP не получится, по крайней мере Let’s Encrypt.
А что за сервер, зачем он на своем компе?
В данный момент просто для теста. Хотел по приколу написать скачивалку с ютуба на JS. Поднял сервер, чтобы обойти CORS.
Думал, потом какую-нибудь онлайн-фигню с сервером напишу.
А оказалось, что там ещё есть
mixed content
.Люди в тюрбанах опять весь кайф обломали
ну а где же ещё?
Это что, что такое?
По сокетам:
это как конекторы, как шнурки к телевизору или компьютеру и тому подобное. Только виртуальные.
То, что скрипты на сайте не могут отправить запрос другому сайту если тот это не разрешил. (клиентские скрипты, сервер может что угодно)
Что это значит?
Так это аналог обычных сокетов или нет? Вы дали описание обычного сокета.
Ну имя доменное нужно, mysite.com
, а не 123.124.125.126
.
По идее с IP тоже можно, но сложнее и возможно не бесплатно.
Здесь работает без домена. Только я не пойму как код изменить так чтобы обычные GET
-запросы проходили.
Если послать ему запрос типа https://127.0.0.1:5555/xxx/yyy
, метод обработки запроса ничего не делает и рекурсивно заходит сам в себя, каждый раз создавая новый поток.
А как прокси сервер - работает. IP браузера меняется.
Не очень понял как это прокси поможет
Для экспериментов и разработки еще есть такой вариант: https://ngrok.com/
Там надо установить их ПО, запустить, и оно даст адрес типа https://xyz.ngrok.io
, по которому будет то, что отдает локальный сервер.
Не нужен никакой белый IP и т.п.
Но бесплатно адрес будет каждый раз меняться.
Оу
Не понял. Совсем ни чего.
Так понимаю. Если есть запрос к серверу на выдачу страницы, то в этом запросе может быть что угодно. Как сервер определяет от кого запрос, от обозревателя или с другого сервера отправленый автоматически?
Серверу пофиг, CORS на уровне браузеров делается, для защиты пользователей браузера. Когда из JS отправляется запрос на другой домен, то браузер смотрит есть ли в ответе заголовок разрешающий запросы с текущего домена. То есть вроде сначала браузер отправит OPTIONS
запрос, чтоб получить заголовки, а потом (если разрешено) весь реальный запрос.
Cross-Origin Resource Sharing (CORS) - HTTP | MDN
Preflight request - MDN Web Docs Glossary: Definitions of Web-related terms | MDN
Никак не поможет. Но там сертификаты и HTTPS работают без домена, регистрации и СМС.
Что значит IP браузера меняется? IP получает машина от провайдера. Машина а не браузер. Или я ошибаюсь?
Как может быть действительным сертификат без его регистрации?
Я запускаю у себя на компе этот сервер. Потом на другом компьютере (который находится в доме на соседней улице) в браузере в качестве прокси-сервера ставлю свой IP адрес. И браузер начинает показывать мой IP. А в консоли с сервера написано, что ко мне подключились.
Так понятнее?
Ну я-то откуда знаю? Скачайте код и сами посмотрите
Так понятней. Но не понятно как идет перенаправление.
Если у соседа свой адрес а у Вас свой.
Как происходит обман браузера клиента который шлет запросы?
адреса разные
а почему нет?