Извлечение https контента через api на клиентском сайте, но браузеры выдают ошибки http смешанного контента - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь создать внешний API в приложении Django для предоставления некоторого контента на рабочий сайт Wordpress. Клиент работает по протоколу https, а javascript использует fetch для получения URL-адреса https api, но браузеры запрашивают смешанный контент http. Что дает?

Я пробовал и Chrome, и Firefox, и оба возвращают похожие ошибки

fetch('https://mysite.pythonanywhere.com/apit?param1=100000&param2=1000', {
    method: 'GET',
  })
  .then(function(response) {
    if (response.status !== 200) {
      console.log(response);
      console.log('Looks like there was a problem. Status Code: ' +
        response.status);
      return;
    }
  });

мой взгляд на это в Django:

response = JsonResponse(the_content_dict,safe=False)
return response

Iможно перейти по URL-адресу непосредственно в браузере и просмотреть ответ json, как и ожидалось, но когда я размещаю приведенный выше код на клиентском WP-сайте, я вижу в консоли Firefox:

Blocked loading mixed active content “http://mysite.pythonanywhere.com/apit?param1=100000&param2=1000”

TypeError: NetworkError when attempting to fetch resource. rank:154:3
Response { type: "cors", url: "https://mysite.pythonanywhere.com/apit?param1=100000&param2=1000", redirected: false, status: 500, ok: false, statusText: "Internal Server Error", headers: Headers, body: ReadableStream, bodyUsed: false }
Looks like there was a problem. Status Code: 500

Аналогично, в Chrome:

(index):154 Mixed Content: The page at 'https://clientsite.com' was loaded over HTTPS, but requested an insecure resource 'http://mysite.pythonanywhere.com/apit?param1=100000&param2=1000'. This request has been blocked; the content must be served over HTTPS.
(anonymous) @ (index):154
(index):1 Uncaught (in promise) TypeError: Failed to fetch

Почему браузеры пытаются загрузить не HTTPS-версию вместо https в выборке? Я использую django-cors-headers для внесения в белый список клиентского домена, который, кажется, работает.

...