HTTP GET 有效,但 OPTIONS 显示服务器回复为空

HTTP GET 有效,但 OPTIONS 显示服务器回复为空

我遇到了这个问题,无法通过 ajax 调用我的开发服务器。奇怪的是,这种情况只发生在这台特定的机器上。

所有浏览器都会发生这种情况,当我使用 Chrome 调试器检查网络流量时,似乎 OPTIONS 请求从未发出,控制台上显示 net::ERR_EMPTY_RESPONSE。它在这台电脑上的所有浏览器上的行为都相同,但在其他任何电脑上都能完美运行。当我在终端中使用 CURL 或 Telnet 进行选项调用时,cURL 返回

 Jon-MacBook-Air:~ jsmith$ curl -X OPTIONS http://dev.abc.com/dashboardLogin.php
 curl: (52) Empty reply from server

当 Telnet 返回时

 Jon-MacBook-Air:~ jsmith$ telnet dev.abc.com 80 
 Trying 10.10.11.59...
 Connected to dev.abc.com.
 Escape character is '^]'.
 OPTIONS dashboardLogin.php HTTP/1.1
 Connection closed by foreign host.

我尝试使用 cURL 和 Telnet GET 相同的地址,都运行正常。我还要再次强调,这个问题只发生在这台运行 OSX Yosemite 的电脑上。

答案1

我最近遇到了这个问题——完全相同的行为,HTTP GET 请求可以工作,HTTPS OPTIONS 请求可以工作,但 HTTP(非安全)OPTIONS 不工作。我注意到有一个名为 running 的进程vpnagentd在后台运行,即使我没有连接到 VPN。将此进程追溯到我必须为客户端项目安装的 Cisco AnyConnect 驱动程序。卸载 Anyconnect 后,不安全的 HTTP OPTIONS 请求又开始工作了。如果您安装了 Anyconnect,请尝试卸载并查看是否能解决您的问题。

相关内容