2015-10-01 5 views
1

Наш сайт интрасети должен взаимодействовать с клиентским .NET-приложением. Мы используем HttpListener (на http://localhost:[port]) в клиентском приложении и iframe, который ссылается на этот URL-адрес на странице. Он работает как шарм, когда страница является HTTP.«Смешанный контент» Ошибка при доступе к HTTP в HTTPS-странице

Проблема: Когда сайт HTTPS «Смешанный контент» Javascript-ошибка отображается в новых браузерах, и запрос не приходит к клиенту.

Я считаю, что эта ошибка также возникла при использовании запроса Ajax вместо iframe.

Я также попытался связать самозаверяющий сертификат с прослушивателем и прослушивать https://localhost:[port] (который работает для IE), но поскольку у Firefox есть собственный магазин сертификатов, его очень сложно установить там автоматически (IE использует сертификат Windows который легко установить там).

Итак, есть ли у кого-нибудь возможность сделать запрос к http://localhost:[port], когда сам сайт HTTPS работает как для FF, так и для IE?

Спасибо!

+0

Почему бы не просто запустить все на https? Почему у вас смешанный контент в первую очередь? – Halcyon

+0

Как я писал: очень некрасиво автоматически устанавливать сертификат в firefox (вам нужно использовать инструменты NSS и установить C++ Redistributable 2010) – Powerslave

+0

Ох, так что 'http: // location: [port]' на самом деле не веб-сайт но API для вашего приложения .NET? Это странно. Почему бы не использовать XMLHTTPRequest? – Halcyon

ответ

1

Изменение IFrame на:

<script> 
    var request = new XMLHTTPRequest(); 
    request.open("GET", "http://localhost:[port]/?action=doStuff"); 
    request.send(); 
</script> 

Вам также потребуется внести некоторые незначительные изменения в приложение.

Необходимо реализовать метод OPTIONS и ему необходимо вернуть политику перекрестного происхождения-ресурса. Это звучит намного сложнее, чем просто, ему просто нужно вернуть ответ с заголовком Access-Control-Allow-Origin, установленным на *.

Ответ на запрос GET также должен иметь этот заголовок.

Если вы знаете все домены, которые пытаются установить связь с вашим приложением на локальном хосте, вы можете изменить * на белый список или даже на одно значение.

+0

mithinks это в любом случае будет заблокировано как смешанный контент, потому что запрос будет от _https_ до _http_ – Grundy

+0

Да, что говорит Гранди: все еще происходит ошибка «смешанного контента». Запрос даже не придет к моему клиенту. – Powerslave