gpt4 book ai didi

node.js - AJAX 请求的 QUnit 和 PhantomJS 测试只能通过代理进行

转载 作者:搜寻专家 更新时间:2023-11-01 00:08:48 24 4
gpt4 key购买 nike

我正在尝试使用 grunt-contrib-qunit 在 Windows 8 上的 Phantom headless 模式下运行一套预先存在的 qunit 测试(测试 ajax 请求结果的解析)。

测试在这些场景中完成得很好:

  • 当直接从任何浏览器访问远程页面时没有运行 Fiddler 或其他代理
  • 当 Phantom 从命令提示符运行测试时 Fiddler 打开并运行

奇怪的是,如果我没有打开 fiddler 来监视请求,我正在测试的 AJAX 请求似乎永远不会初始化。我已经检查了我的默认 IE LAN 设置并且没有启用代理,我也尝试在那里翻转自动检测设置复选框并且没有任何变化。

有什么想法吗??

关于我的设置的详细信息:

  • Node v0.10.4
  • 最新grunt-contrib-qunit
  • Windows 8
  • QUnit 分为 4 或 5 个模块,一些模块中有设置和拆卸任务,异步和同步测试,autorun 设置为 false。

更新:

如果我关闭 Fiddler 中的“重用客户端连接”和“重用服务器连接”选项,我似乎会遇到与 Fiddler 关闭时相同的失败行为。这让我相信这是一个连接过早关闭的问题,所以我尝试设置一个自定义的 keep-alive header ——但它仍然出错。

更新 2:

我仍然质疑这一点,因为页面本身加载正常,但请求失败,但看起来这可能与 NTLM 身份验证有关。 Fiddler 可能会以某种方式促进握手。有一个 open issue for NTLM on the Phantom github page .

更新 3:

在今晚继续进行故障排除后,问题似乎只与 POST 请求的身份验证有关。 GET 请求似乎工作正常。我现在正在解决这个问题,方法是通过 ASHX 处理程序路由所有请求,从而删除 auth 组件。我唯一需要更改的是禁用 phantom 上的网络安全以允许跨域请求通过。

最佳答案

我要说的是您需要关闭安全性,这是通过将 --web-security=no 传递给 phantomjs 来完成的。这将解决 CORS 问题。但是我在您的更新 #2 中看到您已经发现了这一点。

对于 POST 身份验证问题,我在这里写了解决方法: http://darrendev.blogspot.jp/2013/04/phantomjs-post-auth-and-timeouts.html

我听说最新版本已经解决了这个问题,所以升级可能是真正的答案?

顺便说一句,请注意 PhantomJS 中的身份验证,因为身份验证详细信息是在所有 请求中发送的。例如。如果您的测试页面从 CDN 获取 JQuery,CDN 将发送您的身份验证 header 。 (SlimerJS 有一些新特性来解决这个问题;AFAIK PhantomJS 还没有。)

关于node.js - AJAX 请求的 QUnit 和 PhantomJS 测试只能通过代理进行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16388306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com