2015-06-08 2 views
3

Мой запрос AJAX использует HTTP, даже если запрос исходит из страницы с использованием HTTPS. Любая идея, почему это понижение до HTTP?AJAX с использованием HTTP вместо HTTPS

Вот мой AJAX запрос:

$(function() { 

    // Update section options whne course is changed 
    $('#id_new_course').change(function() { 

    // Get selected coursenum 
    var val = $(this).val(); 
    var sect_input = $('#id_section'); 

    // Disable #id_section when no course is selected 
    if (val == '') { 
     sect_input.empty(); 
     sect_input.prop('disabled', true); 
    } else { 
     // Get list of sections for selected course and update #id_section options 
     $.ajax({ 
     url: '/account/support_dashboard.get_course_sections/' + val + '/', 
     dataType: 'json', 
     success: function(data) { 
      // Empty options and add new ones to #id_section 
      sect_input.empty(); 
      $.each(data, function(value, key) { 
      sect_input.append($('<option></option>').attr('value', value).text(key)); 
      }); 
      sect_input.prop('disabled', false); 
     }, 
     error: function() { 
      console.log('ERROR OCCURRED TRY AGAIN'); 
     } 
     });//ajax 
    }//if 

    }); 

}); //ready 

Вот вывод ошибки в веб-консоли:

Mixed Content: The page at 'https://www.myeducator.com/account/support_dashboard/1027/993532704604577793/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://www.myeducator.com/account/support_dashboard.get_course_sections/915ba/'. This request has been blocked; the content must be served over HTTPS. 

Javascript Файл загружается через HTTPS:

Request Over HTTPS

Кроме того, фактический запрос ajax выходит как HTTPS:

AJAX Request over HTTPS

Я также не думаю, что это не имеет ничего общего с моей веб-сервера (Nginx). У меня есть только одна команда перезаписи, которая перенаправляет любым необработанным поддомены к www.myeducator.com используя ту же схему запроса:

server { 
    listen 443 default_server ssl; 
    server_name _; 

    ... 

    # the rewrite string 
    rewrite^$scheme://www.myeducator.com$request_uri redirect; 
} 
+1

И загружен ли файл .js из https? – adeneo

+2

Когда вы смотрите на http-запрос в консоли. вы видите, что он делает вызов https? – epascarello

+0

Интересный вопрос. Интересно, почему jQuery не собирает https с исходной страницы, когда вы передаете ему относительный URL-адрес? Я думаю, что вы можете захватить протокол, порт и домен из 'window.location' и добавить это к своему URL-адресу. – jfriend00

ответ

0

У меня была аналогичная проблема, очень загадочное ...

Mixed Content: The page at 'https://domain.com/blah.json' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://domain.com'. This request has been blocked; the content must be served over HTTPS. 

It оказалось, что .json не был настроен в MIME-типах в IIS. После добавления расширения .json все работало должным образом.

Редактировать: Мое подозрение будет вашей конечной точкой. «Dashboard.get_course_sections» имеет точку, которая заставляет ваш сервер думать, что это ресурс, чтобы захватить, что он не поддерживает.

+0

ОП использует nginx, а не IIS. – Marty

+0

Обновлено, чтобы быть более ясным с моими мыслями о том, как связаны обе проблемы. – Nhan

+0

Прощение позднего ответа. Рамка, которую мы используем, представляет собой модифицированную версию Django под названием Django-Mako-Plus. Короче говоря, но точечный синтаксис url не указывает тип mime, а скорее определенную функцию просмотра для вызова. Так что это не точка внутри URL-адреса. – ngoue

Смежные вопросы