我为客户编写了一个Web应用程序,其中包含 JavaScript前端和 PHP后端(API)。
客户的员工在使用互联网时必须运行VPN软件(称为Pulse)。
我的(前端和后端)应用程序在Apache2
上运行,并使用Let's Encrypt
SSL证书来提供HTTPS请求。到目前为止,一切都在我的测试计算机上完美运行。
使用此VPN软件在客户的计算机上测试Web应用程序时,我们遇到了一些奇怪的问题:
使用Firefox,他们无法访问任何HTTPS安全网站。 Firefox抛出证书错误。查看证书时,它说:Their Company
而不是Let's Encrypt
发布。这不是我的问题,因为它发生在所有网站上 - 但仍然很奇怪?
使用Internet Explorer 11,没有任何证书错误或警告。但Web应用程序表现得很奇怪。更具体地说,后端的空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
请注意,我在API网络服务器上启用了CORS。但我无法想象这是问题所在。