#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.