2014-09-10 84 views
3

我有两个子域client.domain.com和server.domain.com 客户端只是一个简单的jquery ajax POST请求的index.html。Symfony2随机很长的跨域ajax请求

$.ajax({ 
    url: 'http://server.domain.com/upload', 
    type: 'POST', 
    success: function(response){ 
    console.log(response); 
    } 
}); 

服务器运行symfony2并将Access-Control-Allow-Origin标头设置为'*'。

客户端发送的预检OPTIONS请求通常(80%的时间)非常快(100ms),随机非常长(10到15s timeline + headers)。

我测试发送邮递员OPTIONS请求,并且绝对没有问题,总是很快,所以它似乎来自jquery ajax请求。另外symfony2网络分析器说,缓慢的请求没有任何问题,所以它似乎不是来自服务器。

我真的不知道如何调试这个,有什么建议吗?

+0

我不知道这是否会有所帮助。但是我发现这篇文章对于这个问题非常有帮助:http://www.html5rocks.com/en/tutorials/cors/ – 2014-09-10 21:22:35

+0

作为第一步,请尝试确定请求生命周期的哪一部分缓慢。您可以使用浏览器的开发人员工具(网络选项卡上的Chrome时间轴)和/或网络嗅探器。 – 2014-09-10 22:28:46

+0

Develeper工具除了请求的时间外并没有多说:(http://drp.io/byM – httpete 2014-09-11 00:03:52

回答

0

这似乎是一个会话锁定问题。基本上symfony会阻止并行请求。 试图将此代码preferrably尽快添加到您的控制器动作,但OFC之前没有编辑完成的任何事情可以更新会话(通常与用户相关的):

public function uploadAction() { 
    // code potentially affecting session 

    session_write_close(); // unlock session to allow multiple requests with this session 

    // rest of the code 
} 

更多信息: