ref: 711d0a33b84330f0752c666538863b58916a1187
parent: fe91fdbedd67e820d2e9d2ded611c81c84ea4f17
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Tue Apr 3 04:32:21 EDT 2012
webfs: make up fake spoof referer
--- a/sys/src/cmd/webfs/fs.c
+++ b/sys/src/cmd/webfs/fs.c
@@ -397,10 +397,31 @@
m = "GET";
if(cl->request[0])
m = cl->request;
+
+ if(!lookkey(cl->hdr, "Referer")){+ char *r;
+ Url *u;
+
+ /*
+ * Referer header is often required on broken
+ * websites even if the spec makes them optional,
+ * so we make one up.
+ */
+ if(u = url("/", cl->url)){+ if(r = smprint("%U", u)){+ cl->hdr = addkey(cl->hdr, "Referer", r);
+ free(r);
+ }
+ freeurl(u);
+ }
+ }
+
if(!lookkey(cl->hdr, "Connection"))
cl->hdr = addkey(cl->hdr, "Connection", "keep-alive");
+
if(agent && !lookkey(cl->hdr, "User-Agent"))
cl->hdr = addkey(cl->hdr, "User-Agent", agent);
+
http(m, cl->url, cl->hdr, cl->qbody, f->buq);
cl->request[0] = 0;
cl->url = nil;
--
⑨