0

我有一个 Angular/Restangular 应用程序,它将X-CSRFToken标头附加到后端 REST API 的所有 POST 请求。标头的值是从$cookies.csrftoken中提取的。这是必要的,因为 Django 后端使用 SessionAuthentication 的行为 - 它需要此标头用于 POST 请求。CORS 配置在前端和后端的域之间。

这在 Chrome 或 Firefox 的普通浏览器会话中运行良好。

当通过 Webdriver 和 Protractor 运行时,确实存在并发送了 csrftoken cookie,但$cookies对 Angular 来说是空的,因此 X-CSRFToken 也是空的。在 webdriver 生成的 Firefox 实例期间,我可以清楚地看到这种情况发生在打印调试和调试器中。

这只发生在通过量角器运行测试套件时。我无法以任何其他方式复制空的 $cookies。我也很惊讶在测试框架下的行为会如此不同。

有任何想法吗?我错过了什么吗?

4

1 回答 1

1

这是因为量角器在 localhost 下打开了具有更严格 CORS 安全性的浏览器。我所有的手动测试只是碰巧通过本地 IP 地址而不是 localhost 访问该应用程序。

于 2014-08-29T07:22:51.863 回答