我正在尝试使用grunt-contrib-qunit
在Windows 8上使用Phantom以无头模式运行预先存在的qunit测试套件(测试解析ajax请求结果)。
在这些情况下,测试完成得很好:
奇怪的是,如果我没有fiddler打开监视请求,我正在测试的AJAX请求似乎永远不会初始化。我已经检查了我的默认IE LAN设置,并且没有启用代理,我也尝试在那里翻转自动检测设置复选框,但没有更改。
有什么想法吗?
我的设置详情:
grunt-contrib-qunit
更新
如果我关闭Fiddler中“重用客户端连接”和“重用服务器连接”中的选项,我似乎会得到与Fiddler关闭时相同的失败行为。这让我相信连接过早关闭是一个问题,所以我尝试设置一个自定义的keep-alive标头 - 但它仍然出错。
更新2:
我仍然对此问题,因为页面本身加载正常,但请求失败,但看起来这可能与NTLM身份验证有关。提琴手可能以某种方式促进握手。有open issue for NTLM on the Phantom github page。
更新3:
在今晚继续进行故障排除之后,问题似乎只是对POST请求进行身份验证。 GET请求似乎工作正常。我现在正在通过ASHX处理程序路由所有请求,从而删除auth组件,从而围绕。我唯一需要改变的是在幻像上禁用Web安全性以允许跨域请求通过。
答案 0 :(得分:0)
我打算说你需要关闭安全性,这是通过将--web-security=no
传递给phantomjs来完成的。这将解决CORS问题。但是我在你的更新#2中看到你已经发现了这个。
对于POST身份验证问题,我在此处发布了有关解决方法的博文: http://darrendev.blogspot.jp/2013/04/phantomjs-post-auth-and-timeouts.html
我听说最近的版本修好了,所以升级可能是实际的答案吗?
顺便说一下,在PhantomJS中要小心auth,因为auth详细信息是在所有请求上发送的。例如。如果您的测试页从CDN获取JQuery,则CDN将发送您的身份验证标头。 (SlimerJS有一些新功能可以解决这个问题; AFAIK PhantomJS还没有。)