Speaking of CSRF, I have a slightly different setup from the Sente examples where I use sente for all my communication after the initial load, whereas the Sente examples use normal HTTP to perform logins and only use Sente after login. This way the login request can set the client-id and CSRF token. In my setup I can't do this because I do all requests over Sente (and my html/js files are served by a static web server, so I can't set it from those requests either).
What I do to get around this is have a <script src="/init"> before my clojurescript js and the /init route sets up the client-id token and returns "var csrf_token = ...". Then on the client I can pass the token to sente as js/csrf_token. I left this out in my previous mail because I thought it wasn't relevant and wanted to keep the code simple, but I guess it might be useful after all if you are doing something similar to what I'm doing. Btw, as far as I can remember, sente has an option to turn CSRF off - at least, I've used it without CSRF. Obviously you should only do that during development :) On 26 July 2014 12:50, Bob Hutchison <hutch-li...@recursive.ca> wrote: > > Hi Tim, > > I think I went through this when I was first starting with Sente. You need > to setup the CSRF handling part, in the example code by including > ring-anti-forgery/wrap-anti-forgery in your routes. *AND* you have to make > sure that you are using one of those routes before you try to use Sente’s > connection stuff, otherwise your session won’t have certain critical > attributes set (e.g. __anti-forgery-token). I think the 404s are from the > anti-forgery stuff rejecting your request. And I think Sente is assuming > it’s setup. This was a while ago so maybe I’m not remembering it quite > right. > > Cheers, > Bob > > On Jul 26, 2014, at 12:33 AM, Timothy Washington <twash...@gmail.com> > wrote: > > Hi all, > > I'm using [com.taoensso/sente "0.15.1" > <https://github.com/ptaoussanis/sente>], and having trouble connecting > the client to the server. I'm sure it's something simple, but not obvious, > as this is taken directly from the examples on sente's github page. Anyone > seen and fixed the error in fig.1? The clojurescript and clojure code are > in fig 2 and 3 respectively. > > > WebSocket connection to 'ws://172.28.128.5:58269/chsk' failed: Error > during WebSocket handshake: Unexpected response code: 404 > WebSocket error: [object Event] VM1707:1689 > Chsk is closed: will try reconnect (8). VM1707:1689 > > fig.1 - Chrome network error message > > (ns my.ns > (:require-macros > [cljs.core.match.macros :refer (match)] ; Optional, useful > [cljs.core.async.macros :as asyncm :refer (go go-loop)]) > (:require > ;;[clojure.browser.repl :as repl] > [cljs.core.match] ; Optional, useful > [cljs.core.async :as async :refer (<! >! put! chan)] > [taoensso.sente :as sente :refer (cb-success?)])) > > > (let [{:keys [chsk ch-recv send-fn state]} > (sente/make-channel-socket! "/chsk" {:type :auto})] > > (def chsk chsk) > (def ch-chsk ch-recv) > (def chsk-send! send-fn) > (def chsk-state state)) > > (defn one [] > (chsk-send! [:some/request-id {:name "Rich Hickey" :type "Awesome"}])) > > > *fig.2 - my.cljs * > > > (ns my.http.ns > (:require [compojure.core :refer :all] > ... > > ;; Sente stuff > [clojure.core.match :as match :refer (match)] ; Optional, > useful > [clojure.core.async :as async :refer (<! <!! >! >!! put! chan > go go-loop)] > [taoensso.sente :as sente])) > > > (let [{:keys [ch-recv send-fn ajax-post-fn ajax-get-or-ws-handshake-fn]} > (sente/make-channel-socket! {})] > > (def ring-ajax-post ajax-post-fn) > (def ring-ajax-get-or-ws-handshake ajax-get-or-ws-handshake-fn) > (def ch-chsk ch-recv) > (def chsk-send! send-fn)) > > ... > > (defn create-approutes [project-config browserrepl] > > (defroutes app-routes > > ;; Sente stuff > (GET "/chsk" req (ring-ajax-get-or-ws-handshake req)) ; tried both > ring-ajax-get-or-ws-handshake and *#'*ring-ajax-get-or-ws-handshake > (POST "/chsk" req (ring-ajax-post req)) ; same > here for trying both > > > (GET "/" [] > (-> (ring-resp/response (with-browser-repl "index.html" > browserrepl)) > (ring-resp/content-type "text/html"))) > > (route/resources "/" {:root "resources/public/"}) > (route/not-found "Not Found"))) > > *fig.3 - my.clj * > > > Tim Washington > Interruptsoftware.com <http://interruptsoftware.com/> > > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.