gpt4 book ai didi

javascript - TheIntern 测试框架异步设置

转载 作者:行者123 更新时间:2023-11-28 01:02:00 25 4
gpt4 key购买 nike

作为我的项目的一部分,我正在使用 https://github.com/theintern/intern/运行单元和功能测试。

在我的一项测试中,我正在测试 JSON Rest API 的服务器实现。我需要此实现来与 Dojo JSON Rest 客户端 ( http://dojotoolkit.org/reference-guide/1.10/dojo/store/JsonRest.html ) 配合使用。

因此,我尝试手动触发 Dojo Store 应该执行的 XHR。但是,我不知道如何绕过浏览器中的 CSRF 保护,因为我找不到将我的服务器实现(我希望测试的)与 Intern 框架内的 Web 服务器集成的方法。

Intern Web 服务器在 http://localhost:9000 运行,我的 JSON Rest Store 位于 http://localhost:3000,因此会触发 CSRF 浏览器保护。

通常,需要跨服务器执行 XHR 的页面需要来自原始服务器的某种 CSRF token /cookie 授权。我如何与实习生一起执行此操作?如果我需要从 JSON REST API 服务器实现获取此授权,那么我的服务器将无法作为 REST 实现工作,因为我需要跟踪状态。我的理解对吗?

在我的应用程序本身(生产服务器)中,这不是问题,因为 JSON Rest API 的服务器实现还为启动 XHR 的静态 HTML 页面提供服务。

更新:我找到了有关无状态 CSRF 保护的指南:http://appsandsecurity.blogspot.de/2012/01/stateless-csrf-protection.html 。我仍然需要对此进行测试,看看它如何应用于 Dojo JSON Rest 存储。

最佳答案

我听说如果您需要进行开发,您可以在某些浏览器中禁用 CSRF 保护。然而,这种保护是非常重要的,没有它,AJAX 请求将太危险而不允许页面使用它们......

您的 Web 应用程序和 REST channel 必须位于同一 IP同一端口。如果您有 2 台独立的服务器,实现它的方法是使用代理服务器。其中一台服务器提供此类功能,或者您使用第三台服务器(如 Apache)来代理对两台服务器的调用。

我正在使用 Apache HTTPD 和 mod_proxy 。我将客户端代码(html 和 js)存储在 apache 上,并使用 httpd.conf 中定义的配置将调用重定向到其余服务:

ProxyPass /myapp/rest/ http://l0calhost:9000/myapp/rest/

您的休息 channel 将在 http://l0calhost:3000/myapp/rest 下可用(如果您的 apache 服务器监听 l0calhost:3000),并且应用程序(JS)可以在/myapp/rest下引用。

当然,您需要首先取消注释激活 mod_proxy 的行

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

关于javascript - TheIntern 测试框架异步设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25519374/

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