diff --git a/config.def.h b/config.def.h
index b81e6b0..e2c5946 100644
--- a/config.def.h
+++ b/config.def.h
@@ -12,6 +12,7 @@ static Bool kioskmode	    = FALSE; /* Ignore shortcuts */
 static Bool showindicators  = TRUE;  /* Show indicators in window title */
 static Bool zoomto96dpi     = TRUE;  /* Zoom pages to always emulate 96dpi */
 static Bool runinfullscreen = FALSE; /* Run in fullscreen mode by default */
+static guint cookiepolicy[2] = { 2, 1 }; /* 0:always, 1:never, 2:no third party */
 
 static guint defaultfontsize = 12;   /* Default font size */
 static gfloat zoomlevel = 1.0;       /* Default zoom level */
@@ -93,6 +94,7 @@ static Key keys[] = {
     { MODKEY|GDK_SHIFT_MASK,GDK_s,      toggle,     { .v = "enable-scripts" } },
     { MODKEY|GDK_SHIFT_MASK,GDK_v,      toggle,     { .v = "enable-plugins" } },
     { MODKEY|GDK_SHIFT_MASK,GDK_m,      togglestyle,{ 0 } },
+    { MODKEY|GDK_SHIFT_MASK,GDK_t,      togglecookie,{ 0 } },
     { MODKEY|GDK_SHIFT_MASK,GDK_b,      togglescrollbars,{ 0 } },
     { MODKEY|GDK_SHIFT_MASK,GDK_g,      togglegeolocation, { 0 } },
 };
diff --git a/surf.c b/surf.c
index f0be24b..5b8bafe 100644
--- a/surf.c
+++ b/surf.c
@@ -79,7 +79,7 @@ static gboolean showxid = FALSE;
 static char winid[64];
 static gboolean usingproxy = 0;
 static char togglestat[7];
-static char pagestat[3];
+static char pagestat[4];
 
 static void addaccelgroup(Client *c);
 static void beforerequest(WebKitWebView *w, WebKitWebFrame *f,
@@ -163,6 +163,7 @@ static void titlechange(WebKitWebView *v, WebKitWebFrame *frame,
 static void toggle(Client *c, const Arg *arg);
 static void togglegeolocation(Client *c, const Arg *arg);
 static void togglescrollbars(Client *c, const Arg *arg);
+static void togglecookie(Client *c, const Arg *arg);
 static void togglestyle(Client *c, const Arg *arg);
 static void updatetitle(Client *c);
 static void updatewinid(Client *c);
@@ -296,9 +297,14 @@ cookiejar_init(CookieJar *self) {
 
 static SoupCookieJar *
 cookiejar_new(const char *filename, gboolean read_only) {
-	return g_object_new(COOKIEJAR_TYPE,
+	SoupCookieJar *soupcookiejar;
+
+	soupcookiejar = g_object_new(COOKIEJAR_TYPE,
 	                    SOUP_COOKIE_JAR_TEXT_FILENAME, filename,
 	                    SOUP_COOKIE_JAR_READ_ONLY, read_only, NULL);
+	g_object_set(G_OBJECT(soupcookiejar), SOUP_COOKIE_JAR_ACCEPT_POLICY,
+			cookiepolicy[0], NULL);
+	return soupcookiejar;
 }
 
 static void
@@ -1195,6 +1201,28 @@ togglescrollbars(Client *c, const Arg *arg) {
 }
 
 static void
+togglecookie(Client *c, const Arg *arg) {
+	Arg a = { .b = FALSE };
+	SoupSession *s;
+	SoupCookieJar *jar;
+	SoupCookieJarAcceptPolicy policy;
+
+	s = webkit_get_default_session();
+	jar = SOUP_COOKIE_JAR(soup_session_get_feature(s, SOUP_TYPE_COOKIE_JAR));
+	policy = soup_cookie_jar_get_accept_policy(jar);
+
+	if (policy == cookiepolicy[0]) {
+		cookiepolicy[0] = cookiepolicy[1];
+		cookiepolicy[1] = policy;
+	}
+
+	soup_cookie_jar_set_accept_policy(jar, cookiepolicy[0]);
+
+	updatetitle(c);
+	reload(c, &a);
+}
+
+static void
 togglestyle(Client *c, const Arg *arg) {
 	WebKitWebSettings *settings;
 	char *uri;
@@ -1245,7 +1273,12 @@ getpagestat(Client *c) {
 	}
 
 	pagestat[1] = usingproxy ? 'P' : '-';
-	pagestat[2] = '\0';
+	switch (cookiepolicy[0]) {
+		case 0: pagestat[2] = '*'; break;
+		case 1: pagestat[2] = '-'; break;
+		case 2: pagestat[2] = '+'; break;
+	}
+	pagestat[3] = '\0';
 
 }
 
