当前位置: 首页 > 面试题库 >

Chrome和Firefox CORS AJAX呼叫在某些Mac机器上被中止

谷翰飞
2023-03-14
问题内容

我们在www.saddleback.com/live上有一个网页,Chrome和Firefox CORS AJAX调用在某些Mac机器上被中止。在装有OSX
10.9(最新更新),Chrome和Firefox(最新更新)的Mac上,对http://api.saddleback.com/WorshipService?version=2&null&_=1386201207191的AJAX调用被终止。这适用于Safari。

此行为是孤立的,但在某些计算机上可重现,但在其他计算机上则无法重现。我们还有其他具有相同操作系统和浏览器版本的Mac机器,它们可以成功打开该网页。

我已验证Web服务器在500毫秒内成功响应了AJAX请求。但是Chrome会等待约30秒,等待响应,并最终终止通话。我为以下失败的电话添加了chrome://
net-internals:

11645: URL_REQUEST
http://api.saddleback.com/WorshipService?version=2&null&_=1386201207191
Start Time: 2013-12-04 15:53:27.469

t=1386201207469 [st=    0] +REQUEST_ALIVE  [dt=30398]
t=1386201207470 [st=    1]   +URL_REQUEST_START_JOB  [dt=30397]
                              --> load_flags = 143540480 (DO_NOT_SAVE_COOKIES | DO_NOT_SEND_AUTH_DATA | DO_NOT_SEND_COOKIES | ENABLE_LOAD_TIMING | MAYBE_USER_GESTURE | REPORT_RAW_HEADERS | VERIFY_EV_CERT)
                              --> method = "GET"
                              --> priority = 2
                              --> url = "http://api.saddleback.com/WorshipService?version=2&null&_=1386201207191"
t=1386201207470 [st=    1]      HTTP_CACHE_GET_BACKEND  [dt=0]
t=1386201207470 [st=    1]      HTTP_CACHE_OPEN_ENTRY  [dt=0]
                                --> net_error = -2 (ERR_FAILED)
t=1386201207470 [st=    1]      HTTP_CACHE_CREATE_ENTRY  [dt=0]
t=1386201207470 [st=    1]      HTTP_CACHE_ADD_TO_ENTRY  [dt=0]
t=1386201207470 [st=    1]     +HTTP_STREAM_REQUEST  [dt=2]
t=1386201207472 [st=    3]        HTTP_STREAM_REQUEST_BOUND_TO_JOB
                                  --> source_dependency = 11647 (HTTP_STREAM_JOB)
t=1386201207472 [st=    3]     -HTTP_STREAM_REQUEST
t=1386201207472 [st=    3]     +HTTP_TRANSACTION_SEND_REQUEST  [dt=0]
t=1386201207472 [st=    3]        HTTP_TRANSACTION_SEND_REQUEST_HEADERS
                                  --> GET /WorshipService?version=2&null&_=1386201207191 HTTP/1.1
                                      Host: api.saddleback.com
                                      Connection: keep-alive
                                      Accept: application/json, text/javascript, */*; q=0.01
                                      Origin: http://www.saddleback.com
                                      User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
                                      Content-Type: application/json
                                      Referer: http://www.saddleback.com/onlinecampus/
                                      Accept-Encoding: gzip,deflate,sdch
                                      Accept-Language: en-US,en;q=0.8
t=1386201207472 [st=    3]     -HTTP_TRANSACTION_SEND_REQUEST
t=1386201207472 [st=    3]     +HTTP_TRANSACTION_READ_HEADERS  [dt=30395]
t=1386201207472 [st=    3]       +HTTP_STREAM_PARSER_READ_HEADERS  [dt=30395]
t=1386201237867 [st=30398]          CANCELLED
t=1386201237867 [st=30398]   -URL_REQUEST_START_JOB
                              --> net_error = -3 (ERR_ABORTED)
t=1386201237867 [st=30398] -REQUEST_ALIVE

这是Wireshark的请求和响应:

请求

GET /WorshipService?version=2&null&_=1386192341441 HTTP/1.1
    [Expert Info (Chat/Sequence): GET /WorshipService?version=2&null&_=1386192341441 HTTP/1.1]
        [Message: GET /WorshipService?version=2&null&_=1386192341441 HTTP/1.1]
        [Severity level: Chat]
        [Group: Sequence]
    Request Method: GET
    Request URI: /WorshipService?version=2&null&_=1386192341441
    Request Version: HTTP/1.1
Host: api.saddleback.com
Connection: keep-alive
Cache-Control: max-age=0
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://www.saddleback.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
Content-Type: application/json
Referer: http://www.saddleback.com/onlinecampus/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

响应

HTTP/1.1 200 OK
    [Expert Info (Chat/Sequence): HTTP/1.1 200 OK]
        [Message: HTTP/1.1 200 OK]
        [Severity level: Chat]
        [Group: Sequence]
    Request Version: HTTP/1.1
    Status Code: 200
    Response Phrase: OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
Access-Control-Allow-Origin: http://www.saddleback.com
Access-Control-Allow-Credentials: true
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 04 Dec 2013 21:25:41 GMT
Content-Length: 2841
    [Content length: 2841]
Set-Cookie: NSC_ndxfc1-45*80=ffffffffaf181c9545525d5f4f58455e445a4a423660;expires=Wed, 04-Dec-2013 14:44:34 GMT;path=/;httponly

我花了太多时间试图弄清楚为什么在某些Mac配置上而不是其他配置上失败。任何帮助将非常感激。


问题答案:

在花费很长时间查看低级网络数据包后,尝试查找问题。原来,病毒扫描程序阻止了该呼叫。关闭网络扫描,它开始工作。

简而言之,Sophos在Firefox和Chrome上阻止了api.saddleback.com,但在Safari上没有阻止。去搞清楚。



 类似资料:
  • 我们在 www.saddleback.com/live 有一个网页,铬和火狐CORS AJAX呼叫在某些Mac机器上中止。在装有 OSX 10.9(最新更新)、铬和火狐(具有最新更新)的 Mac 上,AJAX 会调用 http://api.saddleback.com/WorshipService?version=2 这种行为是孤立的,但在某些机器上可以重现,而在其他机器上则不行。我们有其他Mac

  • 如果Chrome能在我期望的时候打开文件,那就太好了。我会很感激你的帮助。

  • 我正在开发一个Android应用程序,用于使用媒体记录器录制通话,它适用于某些设备,但不能在7.1.1及更高版本的设备上录制其他人的声音,特别是在moto g设备上。 这是我的媒体记录器代码。 有没有办法实现这一点,请建议

  • 我使用intern.js和硒网格来测试我的应用程序web,当我在节点机器(MAC)上运行Chrome测试时,我得到这个错误: 您正在使用不支持的命令行标志-忽略-证书-错误稳定性和安全性将受到影响

  • 1、接口声明 如果您希望在自己的CRM系统嵌入呼叫中心能力,需要对接智齿呼叫中心能力,在对接前请您阅读如下对接流程,以便您更好的完成对接。如果只对接基本呼叫能力,预计对接及调试过程1周左右即可完成。 第一步:获取第三方用户接口调用唯一凭证 请联系您的售后经理,获取您企业的如下信息: 1、companyid(企业id) 2、appid(第三方用户接口调用唯一凭证id) 3、app_key(第三方用户

  • 问题内容: 我需要从被叫方获取呼叫者信息(什么文件/什么行)。我了解到可以为此目的使用inpect模块,但不能完全使用它。 如何使用inspect获取那些信息?还是有其他方法来获取信息? 问题答案: 呼叫者的帧比当前帧高一帧。您可以用来查找呼叫者的框架。然后使用inspect.getframeinfo获取调用者的文件名和行号。