diff --git a/ext/soup/gstsouphttpsrc.c b/ext/soup/gstsouphttpsrc.c
index 28642e3..d23ec4c 100644
--- a/ext/soup/gstsouphttpsrc.c
+++ b/ext/soup/gstsouphttpsrc.c
@@ -489,6 +489,7 @@
   src->session = NULL;
   src->external_session = NULL;
   src->forced_external_session = FALSE;
+  src->cookie_jar = NULL;
   src->msg = NULL;
   src->timeout = DEFAULT_TIMEOUT;
   src->log_level = DEFAULT_SOUP_LOG_LEVEL;
@@ -1026,6 +1027,9 @@
     GST_DEBUG_OBJECT (src, "Re-using session");
   }
 
+  src->cookie_jar = soup_cookie_jar_new ();
+  soup_session_add_feature (src->session,
+      SOUP_SESSION_FEATURE (src->cookie_jar));
   return TRUE;
 }
 
@@ -1041,6 +1045,11 @@
     src->msg = NULL;
   }
 
+  if (src->cookie_jar) {
+    g_object_unref (src->cookie_jar);
+    src->cookie_jar = NULL;
+  }
+
   if (src->session) {
     if (!src->session_is_shared)
       soup_session_abort (src->session);
@@ -1493,11 +1502,12 @@
   }
   if (src->cookies) {
     gchar **cookie;
+    SoupURI *uri = soup_uri_new (src->location);
 
     for (cookie = src->cookies; *cookie != NULL; cookie++) {
-      soup_message_headers_append (src->msg->request_headers, "Cookie",
-          *cookie);
+      soup_cookie_jar_set_cookie (src->cookie_jar, uri, *cookie);
     }
+    soup_uri_free (uri);
   }
 
   if (!src->compress)
@@ -2046,6 +2056,12 @@
   gboolean ret;
   GstSchedulingFlags flags;
   gint minsize, maxsize, align;
+  GstContext *context;
+  GstStructure *context_structure;
+  char *cookie;
+  const gchar *cookies[2];
+  const gchar *context_type;
+  SoupURI *uri;
 
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_URI:
@@ -2057,6 +2073,27 @@
       }
       ret = TRUE;
       break;
+    case GST_QUERY_CONTEXT:
+      if (gst_query_parse_context_type (query, &context_type)
+          && !g_strcmp0 (context_type, "http-headers")) {
+        uri = soup_uri_new (src->location);
+        cookie = soup_cookie_jar_get_cookies (src->cookie_jar, uri, TRUE);
+        context = gst_context_new ("http-headers", FALSE);
+        gst_context_make_writable (context);
+        context_structure = gst_context_writable_structure (context);
+        if (cookie != NULL) {
+          cookies[0] = cookie;
+          cookies[1] = NULL;
+          gst_structure_set (context_structure, "cookies", G_TYPE_STRV, cookies,
+              NULL);
+          g_free (cookie);
+        }
+        gst_query_set_context (query, context);
+        soup_uri_free (uri);
+        ret = TRUE;
+        break;
+      }
+
     default:
       ret = FALSE;
       break;
diff --git a/ext/soup/gstsouphttpsrc.h b/ext/soup/gstsouphttpsrc.h
index 06851dd..cd0397a 100644
--- a/ext/soup/gstsouphttpsrc.h
+++ b/ext/soup/gstsouphttpsrc.h
@@ -63,6 +63,7 @@
   gboolean session_is_shared;
   SoupSession *external_session; /* Shared via GstContext */
   gboolean forced_external_session; /* If session was explicitly set from application */
+  SoupCookieJar *cookie_jar;   /* Volatile HTTP cookie storage */
   SoupMessage *msg;            /* Request message. */
   gint retry_count;            /* Number of retries since we received data */
   gint max_retries;            /* Maximum number of retries */
