簡體   English   中英

Intern測試框架異步設置

[英]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服務器集成的方法。

Intern網絡服務器在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 仍然需要對此進行測試,並查看它如何應用於Dojo JSON Rest存儲。

我聽說您可以在某些瀏覽器中禁用CSRF保護,如果需要進行開發的話。 但是,保護是非常關鍵的事情,沒有它,AJAX請求將太危險而無法允許頁面使用它們。

您的Web應用程序和REST通道都必須位於相同的IP相同的端口上 如果您有2台單獨的服務器,則可以使用代理服務器來實現。 其中一個服務器提供了這樣的功能,或者您使用第三個服務器(如Apache)來代理對這兩個服務器的調用。

我正在將Apache HTTPD與mod_proxy一起使用 我將客戶端代碼(html和js)存儲在apache上,並使用httpd.conf定義的config將調用重定向到rest服務:

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

您的休息頻道將可用(如果您的apache服務器在l0calhost:3000上監聽)在http://l0calhost:3000/myapp/rest ,應用程序(JS)可以在/ myapp / rest下引用它。

當然,您首先需要取消注釋激活mod_proxy的行

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM