Javascript Mac浏览器似乎接受了最初的CORS XHR飞行前请求

Javascript Mac浏览器似乎接受了最初的CORS XHR飞行前请求,javascript,macos,xmlhttprequest,cors,Javascript,Macos,Xmlhttprequest,Cors,我有一个非常简单的启用CORS的Node.js web服务器,它运行在我办公室的另一台机器上。我设置它在8080端口上运行 如果我将其作为初始请求发送,则会触发预飞行(例如内容类型为application/json的请求),它将失败,但只有在非常特定的条件下: 服务器正在端口80或8080上运行。任何其他港口都可以 我正在从Mac(OS X 10.8.5)发送请求。无论我是在本地计算机上运行服务器还是在单独的Windows计算机上运行服务器,效果都是一样的。如果我在我的Mac上运行服务器并从我的

我有一个非常简单的启用CORS的Node.js web服务器,它运行在我办公室的另一台机器上。我设置它在8080端口上运行

如果我将其作为初始请求发送,则会触发预飞行(例如内容类型为
application/json
的请求),它将失败,但只有在非常特定的条件下:

  • 服务器正在端口80或8080上运行。任何其他港口都可以
  • 我正在从Mac(OS X 10.8.5)发送请求。无论我是在本地计算机上运行服务器还是在单独的Windows计算机上运行服务器,效果都是一样的。如果我在我的Mac上运行服务器并从我的Windows机器发出请求,它就可以正常工作
  • 以下是我用来发送请求的代码:

    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'http://myserver.domain.com'); // NOT the real URL of course...
    xhr.setRequestHeader('Content-Type', 'application/json'); // Triggers the preflight OPTIONS request.
    xhr.send();
    
    很简单。没有铃声也没有口哨,但出于某种原因,如果我在Mac上运行该请求,浏览器似乎会在发送选项请求之前吞下它。我没有收到服务器曾经接收过的任何指示,浏览器控制台显示一个(相对无用的)错误。所有三种主要浏览器(Chrome、Safari和Firefox)都显示相同的行为

    其他拥有类似Mac电脑的同事也尝试过这一方法,但结果相同,因此这似乎不是我的电脑特有的

    我认为这可能是我的服务器的一个问题,因为我在一个著名的启用CORS的API服务器(即API.github.com)上尝试了同样的方法,效果很好。但是,我在本地运行了两个完全不同的服务器应用程序,结果相同

    CORS响应头似乎很好——正如我所说,如果我从Windows浏览器发送请求,它将非常有效。此外,如果我最初发送一个非预飞请求,后续的预飞请求也可以正常工作

    我认为在“localhost”或“127.0.0.1”上运行服务器或客户端可能会有问题,但我也使用它们的主机名运行了这两个服务器或客户端,结果相同

    不涉及SSL,所有内容都是HTTP上的明文


    以前有人见过这种特定于Mac浏览器的行为吗?

    找到了我自己问题的答案

    Cisco AnyConnect Mac客户端似乎会导致CORS请求出现问题

    提示:我卸载了它,现在一切正常

    关于我的问题的评论者们对此表示关注,但我并不怀疑VPN软件会在它没有运行时引发此类问题

    更新

    显然,在没有Web安全模块的情况下重新安装它可以解决问题


    你在运行LittleSnitch之类的软件吗?不,不是这样的,我已经关闭了防火墙进行测试。我无法复制(也在10.8.5上),所以这很奇怪。你也不使用任何代理吗?而且,这篇博文是在我发布这个问题的前一天发布的,这让我非常开心。非常感谢。我一直在打猎,但没想到会是思科。谢谢mWillis