Запрос на выборку на локальный хост с базовой авторизацией

#javascript #localhost #fetch #basic-authentication

#javascript #локальный хост #выборка #базовая аутентификация

Вопрос:

Возможно ли это для веб-страницы, например https://example.com выполнить http-запрос к localhost?

Это необычная ситуация. Позвольте мне объяснить:

У моих посетителей работает локальный сервер. Они могут получить доступ к своему серверу с помощью запроса to http://localhost:12039/wallet , который возвращает json.

Когда посетитель открывает мою страницу (по адресу example.com ) может ли JS на этой странице выполнить запрос к своему локальному серверу?

Чтобы сделать это еще более сложным: сервер не добавляет заголовок CORS, и он также требует Basic Auth .

От почтальона все работает так, как и ожидалось. Но не из браузера (если не вызывается с локального хоста)

Я провел несколько тестов, но это пока не работает.

Я не в состоянии отправить Authorization сообщение. Когда я запускаю этот код, браузер выдает запрос с запросом имени пользователя и пароля: введите описание изображения здесь

Эти термины действительно трудно найти в Google. Большинство результатов связаны с вызовами localhost для вашего собственного API во время разработки.

Комментарии:

1. Нет CORS == Нет совместного использования ресурсов из разных источников. Браузер не позволит вам выполнить запрос XMLHttpRequest или выполнить выборку для него. И это хорошо; Представьте себе злой веб-сайт, который будет пробовать каждый порт на вашем компьютере, чтобы проверить, запущены ли у вас локальные серверы. Это было бы катастрофой. Ваше доменное имя должно быть авторизовано в заголовках CORS локального сервера

2. Не так, как вы описали, потому что это сделало бы запрос на порт 3000 на хост-сервере. Возможно, вы могли бы использовать ngrok, чтобы локальный сервер, работающий для ваших посетителей, имел портал в Интернет

3. Также обратите внимание: я предполагаю localhost , что сервер использует http без SSL (нет https ). Если это так, то даже при включенной CORS ваш веб-сайт должен обслуживаться http повторно, а не https для того, чтобы это работало. В противном случае вы получите Mixed Content: The page at 'https://example.com' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://localhost:12039'. This request has been blocked; the content must be served over HTTPS.