javascript fetch автоматически изменяет http с помощью https

#javascript #fetch

#javascript #fetch-api

Вопрос:

Я делаю запрос с выборкой на стороне клиента с помощью этого кода:

     var request = new Request(`http://ip:8080/click?url=${value}`, {
        method: 'GET',
        headers: new Headers({
            "Content-Type": "application/json"
        }),
    });
    fetch(request)
  

но когда браузер делает запрос, он автоматически изменяет URL-адрес с помощью протокола https:

https://ip:8080/click?url =${значение}

Примечание: веб-страница имеет SSL-шифрование

Впоследствии я получаю эту ошибку в консоли веб-страницы: не удалось загрузить ресурс: net ::ERR_CONNECTION_CLOSED

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

1. Сервер не поддерживает запросы https, когда я тестирую веб-страницу в своем локальном браузере, у меня нет никаких проблем, но при выполнении этого на веб-странице с использованием SSL-шифрования возникает ошибка.

2. Что ?! вы пишете в комментарии, что сервер «не поддерживает https», а в вашем сообщении «веб-страница имеет ssl-шифрование» ?!

3. да, хостинг веб-страницы имеет SSL-шифрование. Сервер, на котором находится API, не поддерживает запросы https

4. Я думаю, что ваша проблема заключается в CORS: en.wikipedia.org/wiki/Cross-origin_resource_sharing

5. @Marc Как это может быть проблемой CORS, поскольку изменения с http на https выполняются браузером?

Ответ №1:

У меня была такая же проблема, и причиной была следующая строка в разделе head:

 <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
  

Он заменяет все http-запросы на https.

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

1. Обратите внимание, что это также может исходить из HTTP-заголовков ответа страницы.

2. Это было проблемой для меня в моем шаблоне. Я думаю, что это то, что люди должны проверять, когда видят непредсказуемое поведение.