Я написал веб-приложение для клиента, который имеет Интерфейс JavaScript и Бэкэнд PHP (API).
Сотрудники клиента должны использовать программное обеспечение VPN (называемое Pulse) при использовании Интернета.
Мои (фронтенд и бэкэнд) приложения работают на Apache2
и использовать Let's Encrypt
SSL-сертификат для обслуживания HTTPS-запросов. Пока все отлично работает на моих тестовых компьютерах.
При тестировании веб-приложения на компьютере моего клиента с этим программным обеспечением VPN мы столкнулись со странными проблемами:
Используя Firefox, они не могут посещать веб-сайты, защищенные HTTPS. Firefox выдает ошибку сертификата. Глядя в сертификат, он говорит: выдан Their Company
вместо Let's Encrypt
, Это не совсем моя проблема, потому что это происходит со всеми сайтами — но все же очень странно?
При использовании Internet Explorer 11 нет ошибок или предупреждений в сертификатах. Но веб-приложение ведет себя странным образом. Если быть более точным, пустые ответы API бэкэнда не возвращаются (инструменты разработчика в IE11 говорят: «ожидание ответа»). Запросы никогда не заканчиваются, даже если сервер уже завершил ответ.
Как только сервер отвечает не пустым ответом, IE11, похоже, не имеет проблем.
Еще более странно, эта пустая проблема ответа появляется только при запуске этого программного обеспечения VPN. Без этого программного обеспечения все запросы работают нормально.
Как вы думаете, это проблема моего приложения или программного обеспечения VPN?
Вот пример запроса, который поднимет эти странные проблемы. В IE11 в сочетании с этим программным обеспечением я не получу ответ, в противном случае я получу.
Запрос
POST https://myapplication.com/api/login/ HTTP/1.1
Host: myapplication.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://myapplication.com/frontend/
Content-Type: application/json
Content-Length: 66
DNT: 1
Connection: keep-alive
{"email":"myemail","password":"mypassword"}
отклик
HTTP/1.1 204 No Content
Date: Wed, 14 Dec 2016 12:28:51 GMT
Server: Apache/2.4.18 (Ubuntu)
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, session
Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS
Content-Length: 20
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/json
Обратите внимание, что я включил CORS на веб-сервере API. Но я не могу себе представить, что это проблема здесь.
Задача ещё не решена.
Других решений пока нет …