diff lib/js/urweb.js @ 736:796e42c93c48

Cookie signatures for RPCs
author Adam Chlipala <adamc@hcoop.net>
date Thu, 23 Apr 2009 16:13:02 -0400
parents 7c6b6c3c7b79
children 2c463eee89fa
line wrap: on
line diff
--- a/lib/js/urweb.js	Thu Apr 23 14:10:10 2009 -0400
+++ b/lib/js/urweb.js	Thu Apr 23 16:13:02 2009 -0400
@@ -353,7 +353,9 @@
   }
 }
 
-function requestUri(xhr, uri) {
+var sig = null;
+
+function requestUri(xhr, uri, needsSig) {
   xhr.open("GET", uri, true);
 
   if (client_id != null) {
@@ -361,10 +363,17 @@
     xhr.setRequestHeader("UrWeb-Pass", client_pass.toString());
   }
 
+  if (needsSig) {
+    if (sig == null)
+      whine("Missing cookie signature!");
+
+    xhr.setRequestHeader("UrWeb-Sig", sig);
+  }
+
   xhr.send(null);
 }
 
-function rc(uri, parse, k) {
+function rc(uri, parse, k, needsSig) {
   uri = flattenLocal(uri);
   var xhr = getXHR();
 
@@ -389,7 +398,7 @@
     }
   };
 
-  requestUri(xhr, uri);
+  requestUri(xhr, uri, needsSig);
 }
 
 function path_join(s1, s2) {
@@ -438,7 +447,7 @@
   var connect = function () {
     xhr.onreadystatechange = orsc;
     tid = window.setTimeout(onTimeout, timeout * 500);
-    requestUri(xhr, uri);
+    requestUri(xhr, uri, false);
   }
 
   orsc = function() {
@@ -490,8 +499,8 @@
       }
       else {
         try {
-          servError("Error querying remote server for messages: " + xhr.status);
-        } catch (e) { servError("Error querying remote server for messages"); }
+          servErr("Error querying remote server for messages: " + xhr.status);
+        } catch (e) { servErr("Error querying remote server for messages"); }
       }
     }
   };