git: 9front

Download patch

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;
--