Ошибка mixed content

Я написал HTTP-сервер, который принимает определённый GET-запрос и посылает клиенту определённый ответ. Все остальные запросы игнорирует (возвращает код 400). Запускаю я его на своём компе с белым IP.
Потом я на JS написал для него клиент. Локально всё работает, но при деплое на гитхаб перестаёт работать. Не может подключиться к серверу (fetch не работает). Выдаёт ошибку mixed content. Думаю, вы лучше меня понимаете, что это значит. Мой сервер должен быть HTTPS-ным. А для этого надо сгенерировать какие-то самоподписанные сертификаты. Погуглил, но нифига не понял. Можете объяснить на пальцах, что это значит?
Вот пример какого-то сервера:
https://neohope.com/2013/05/21/sslsocket-c-part1/
но нет инструкции для тупых, как сгенерировать нужный сертификат :man_shrugging:
Ещё как-то давно видел видос, как мужик писал онлайн игру на JS на веб-сокетах. Там он тоже сервер писал. Но я не вдавался в подробности. Посмотрел и забыл.
Что такое веб-сокеты? Это аналог обычных сокетов на JS? Может при их использовании не будет ошибки mixed content? :thinking:

Зачем самоподписанные? Lets Encrypt бесплатный.

Объясните на пальцах, в общих чертах, что нужно сделать.

Следовать инструкциям чтоб получить сертификат )
Там много вариантов, самый простой видимо Certbot.
ACME Client Implementations - Let's Encrypt

И еще домен нужен, для просто IP не получится, по крайней мере Let’s Encrypt.

А что за сервер, зачем он на своем компе?

В данный момент просто для теста. Хотел по приколу написать скачивалку с ютуба на JS. Поднял сервер, чтобы обойти CORS.


Думал, потом какую-нибудь онлайн-фигню с сервером напишу.
А оказалось, что там ещё есть mixed content.
Люди в тюрбанах опять весь кайф обломали :man_with_turban:

ну а где же ещё? :man_shrugging:

Это что, что такое?

По сокетам:
это как конекторы, как шнурки к телевизору или компьютеру и тому подобное. Только виртуальные.

То, что скрипты на сайте не могут отправить запрос другому сайту если тот это не разрешил. (клиентские скрипты, сервер может что угодно)

Скачать строку по URL - #6 от пользователя AlexP

Что это значит?

Так это аналог обычных сокетов или нет? :thinking: Вы дали описание обычного сокета.

Ну имя доменное нужно, mysite.com, а не 123.124.125.126.
По идее с IP тоже можно, но сложнее и возможно не бесплатно.

Здесь работает без домена. Только я не пойму как код изменить так чтобы обычные GET-запросы проходили.
Если послать ему запрос типа https://127.0.0.1:5555/xxx/yyy, метод обработки запроса ничего не делает и рекурсивно заходит сам в себя, каждый раз создавая новый поток.
А как прокси сервер - работает. IP браузера меняется.

Не очень понял как это прокси поможет :thinking:

Для экспериментов и разработки еще есть такой вариант: 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. А в консоли с сервера написано, что ко мне подключились.
Так понятнее?

Ну я-то откуда знаю? :man_shrugging: Скачайте код и сами посмотрите

Так понятней. Но не понятно как идет перенаправление.
Если у соседа свой адрес а у Вас свой.
Как происходит обман браузера клиента который шлет запросы?

адреса разные

а почему нет?