summaryrefslogtreecommitdiff
path: root/sys/src/cmd/webfs
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2012-04-03 08:32:21 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2012-04-03 08:32:21 +0200
commitdd04c514700c8227d5d7c0a8eb84b3d8680b2f9c (patch)
tree7e905ba1cba49a7df307a2edb7ac25ff8eb7b2af /sys/src/cmd/webfs
parent37606a6b2907202b33e893e018b18c13cee3941f (diff)
webfs: make up fake spoof referer
Diffstat (limited to 'sys/src/cmd/webfs')
-rw-r--r--sys/src/cmd/webfs/fs.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/sys/src/cmd/webfs/fs.c b/sys/src/cmd/webfs/fs.c
index b331819a4..7f8530434 100644
--- a/sys/src/cmd/webfs/fs.c
+++ b/sys/src/cmd/webfs/fs.c
@@ -397,10 +397,31 @@ fsopen(Req *r)
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;