[英]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.