Internet测试框架异步设置
TheIntern test framework asynchronous setup
作为项目的一部分,我正在使用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服务器集成。
InternetWebserver在http://localhost:9000
运行,而我的JSON Rest Store在http://localhost:3000
,因此CSRF浏览器保护触发。
通常,需要跨服务器执行XHR的页面需要来自原始服务器的某种CSRF令牌/cookie授权。如何与实习生一起执行此操作?如果我需要从JSON REST API服务器实现获得此授权,那么我的服务器将不会作为REST实现工作,因为我需要跟踪状态。我说得对吗?
在我的应用程序(生产服务器)中,这不是问题,因为JSON Rest API的服务器实现也为启动XHR的静态HTML页面提供服务。
更新:我找到了一份关于无状态CSRF保护的指南:http://appsandsecurity.blogspot.de/2012/01/stateless-csrf-protection.html.我仍然需要测试它,看看它如何应用于DojoJSONRest存储。
我听说,如果开发需要,可以在某些浏览器中禁用CSRF保护。然而,这种保护是一件非常关键的事情,如果没有它,AJAX请求将太危险,无法允许页面使用它们。。。
您的web应用程序和REST通道必须位于同一IP和相同端口上。如果您有两个独立的服务器,那么实现它的方法是使用代理服务器。其中一个服务器提供这样的功能,或者使用第三个服务器(如Apache)代理对两个服务器的调用。
我使用的是带有mod_proxy的Apache HTTPD。我将客户端代码(html和js)存储在apache上,并使用httpd.conf
:中定义的配置将调用重定向到rest服务
ProxyPass /myapp/rest/ http://l0calhost:9000/myapp/rest/
您的rest通道将在http://l0calhost:3000/myapp/rest
下可用(如果您的apache服务器在l0calhost:3000
上侦听),应用程序(JS)可以在/myapp/rest下引用它。
当然,您需要首先取消注释激活modproxy 的行
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
- angular 1.3中的ng选项在集合异步设置时忘记了ng模型
- 如何在Angular中设置异步HTTP服务的回调,以便在不定义数组的情况下在控制器中填充数组
- 为什么在定义回调/侦听器函数(异步消息传递,port.on)后没有立即设置全局变量
- AngularJS UI-if 状态变量设置值异步
- 具有异步设置属性的 JS 对象
- 设置同步/异步函数序列的正确方法,所有这些函数都可以停止表单提交和进一步处理
- AJAX 异步设置为 false 阻止页面,否则无法获取该值
- 如何通过异步xmlhttprequest响应设置变量
- 如何在调用异步Web服务响应时将值设置为数组
- 如何从异步回调中设置对象变量
- 在异步调用返回后设置计时器
- 异步设置变量使用promise并避免回调
- 动态异步加载CSS(通过在Javascript中设置“href”属性)
- 除非调用alert(),否则不会设置异步回调中设置的值
- Internet测试框架异步设置
- 从异步函数设置对象值
- 以异步方式向前端web应用程序添加设置文件
- 通过Node异步调用设置变量的正确模式
- 异步设置ReactJS状态
- 设置异步函数的全局变量