我遇到了这个问题,无法通过 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,请尝试卸载并查看是否能解决您的问题。