2010-04-22 89 views
1

我使用本教程http://rubylearning.com/blog/2009/09/30/cookie-based-sessions-in-sinatra/的標題爲「稍微大一些的示例」的示例中的代碼來弄清楚如何將cookie發送到Sinatra應用程序,但我無法弄清楚如何正確設置值如何使用curl將cookie傳遞給Sinatra應用程序?

當我在它創建與BAh7BiIJdXNlciIMYnJhbmRvbg%3D%3D%0A的值是值BAh7BiIJdXNlciIMYnJhbmRvbg==

的URL編碼(http://ostermiller.org/calc/encode.html)使用該值的cookie的應用程序設置的名稱爲「布蘭登」我可以一個cookie發送到應用程序正確

curl -b "rack.session=BAh7BiIJdXNlciIMYnJhbmRvbg==" localhost:9393 

我敢肯定,值是紅寶石哈希的會話的base64編碼,因爲文檔(http://rack.rubyforge.org/doc/classes/Rack/Session/Cookie.html)說

會議是一個Ruby哈希存儲爲base64編碼整理數據設置爲:鍵(默認:rack.session)。

我認爲這意味着我所要做的只是base64編碼{"user"=>"brandon"}並在curl命令中使用它。不幸的是,它創建了一個不同於BAh7BiIJdXNlciIMYnJhbmRvbg==的值。接下來,我嘗試使用base64編碼值並在線解碼各種base64解碼器,但這會導致奇怪的字符(盒符號和其他字符),所以我不知道如何重新創建值甚至進行編碼。

所以我的問題是你知道什麼字符/格式我需要得到正確的base64編碼和/或你知道另一種方式來傳遞一個值使用捲曲,這樣它會註冊爲適當的曲奇爲一個Sinatra應用程序嗎?

+1

你有沒有工作過?我有一個相關但相反的問題,我試圖解碼現有的Rack :: Session :: Cookie - 請參閱http://stackoverflow.com/questions/16312024/how-to-decode-a-cookie-from-the -weader-of-a-websocket-connection-handshake-rub – 2013-05-03 00:07:53

回答

1

F你指的是用戶名和密碼在登錄頁面上的表單中輸入,然後捲曲會「提交」構成,如:

捲曲-D「用戶名= miniape &密碼=祕密」 http://whatever.com/login

,如果你想存儲回來你這樣做通過指定一個cookie文件中的cookie:

捲曲-c cookie.txt的-d「用戶名= miniape &密碼=祕密」 http://whatever.com/login

,並使用在以後的請求,這些餅乾你這樣做:

捲曲-b cookie.txt的-d「用戶名= miniape &密碼=祕密」 http://whatever.com/login

或者兩者都做,如果你想發送和接收餅乾:

捲曲-b cookie.txt的-c cookie.txt的-d 「用戶名= miniape &密碼=祕密」 http://whatever.com/login

發現這對濾機

+0

我在metafilter上也看到了,但那是爲了發佈憑證。我正在嘗試將Cookie與我的GET請求一起傳遞給應用程序中的根處理程序。查看我鏈接到的問題的文章中的代碼http://gist.github.com/205962#file_second_example.rb – caspyin 2010-04-22 20:50:06

相關問題