我張貼此作爲一個例子的解決方案,而我不是說這是你應該怎麼做。然而,我確實遇到了一些「陷阱」,所以我認爲這是值得記錄的。
謝謝你的回答。我只是試圖找出是否有一些更簡單的方法,然後再做我知道我不該做的事情。我決定用服務器端寫入。
我正在使用蘋果酒,栗子和與chrome客戶端接口的brepl服務器。由於我不熟悉環形服務器,compojure和嵌入式jetty服務器,因此我不知道如何將Web服務添加到brepl服務器(端口10555)。相反,我添加了一個到我的本地apache服務器。
因爲請求是從碼頭服務器(如從瀏覽器相對),我是越來越「跨源資源共享」的問題,即消息阿帕奇:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
每當我提交了請求我的服務的URL。
我能夠通過增加來解決這個問題,下面我的HTTP標頭:
-access_control_allow_credentials => 'true',
-access_control_allow_origin => 'http://localhost:10555',
這是他們唯一的疑難雜症。除此之外,這是一個標準的cgi解決方案(是的,老派 - 我來自perl背景)。是的,我知道如果我可以在clojure(或Rails)中完成它,那將是最好的。
我的CGI結束了看起來像:
#!/usr/bin/perl
use CGI qw(:standard);
print header(
-type => 'text/html',
-access_control_allow_credentials => 'true',
-access_control_allow_origin => 'http://localhost:10555',
);
my $q = CGI->new();
my $src = $q->param('src');
# write to file
open(my $fh, ">>", "vt-src-out.txt")
or die "cannot open < vt-src-out.txt: $!";
print $fh "$src\n";
我使用AJAX。核心爲我的客戶端API:
:require [ajax.core :refer [GET POST]]
,並呼籲像服務:
(GET "http://localhost/cgi-bin/cljs-write-src.cgi" {:params {:src "(defn foo [])(+ 1 1)"}})
你只能用文件記錄器API,它目前只有Chrome瀏覽器支持這樣做:http://caniuse.com/#feat=filesystem – ClojureMostly 2015-04-09 17:21:23