diff --git a/src/core/channel/http_client_filter.c b/src/core/channel/http_client_filter.c
index ec832a0367201755025c828665ee88db082bc5b4..5f20f8c16d5fd9c9b47525d8886d4d029c477aeb 100644
--- a/src/core/channel/http_client_filter.c
+++ b/src/core/channel/http_client_filter.c
@@ -70,7 +70,7 @@ typedef struct channel_data {
 /* used to silence 'variable not used' warnings */
 static void ignore_unused(void *ignored) {}
 
-static grpc_mdelem *client_filter(void *user_data, grpc_mdelem *md) {
+static grpc_mdelem *client_recv_filter(void *user_data, grpc_mdelem *md) {
   grpc_call_element *elem = user_data;
   channel_data *channeld = elem->channel_data;
   if (md == channeld->status) {
@@ -78,6 +78,8 @@ static grpc_mdelem *client_filter(void *user_data, grpc_mdelem *md) {
   } else if (md->key == channeld->status->key) {
     grpc_call_element_send_cancel(elem);
     return NULL;
+  } else if (md->key == channeld->content_type->key) {
+    return NULL;
   }
   return md;
 }
@@ -92,11 +94,13 @@ static void hc_on_recv(void *user_data, int success) {
     grpc_stream_op *op = &ops[i];
     if (op->type != GRPC_OP_METADATA) continue;
     calld->got_initial_metadata = 1;
-    grpc_metadata_batch_filter(&op->data.metadata, client_filter, elem);
+    grpc_metadata_batch_filter(&op->data.metadata, client_recv_filter, elem);
   }
   calld->on_done_recv->cb(calld->on_done_recv->cb_arg, success);
 }
 
+
+
 static grpc_mdelem *client_strip_filter(void *user_data, grpc_mdelem *md) {
   grpc_call_element *elem = user_data;
   channel_data *channeld = elem->channel_data;
diff --git a/src/core/surface/call.c b/src/core/surface/call.c
index 1636998f59492126677db0efabb041969d298067..4168c2ef0ccf16fc4a2cfa8ebe2fb6bb80d23c75 100644
--- a/src/core/surface/call.c
+++ b/src/core/surface/call.c
@@ -1485,8 +1485,6 @@ static void recv_metadata(grpc_call *call, grpc_metadata_batch *md) {
     } else if (key == grpc_channel_get_encodings_accepted_by_peer_string(
                           call->channel)) {
       set_encodings_accepted_by_peer(call, md->value->slice);
-    } else if (key == grpc_channel_get_content_type_string(call->channel)) {
-      continue; /* swallow "content-type" header */
     } else {
       dest = &call->buffered_metadata[is_trailing];
       if (dest->count == dest->capacity) {
diff --git a/src/core/surface/channel.c b/src/core/surface/channel.c
index cc9d44f45d626da9fff5dc78bf5ca5259c647175..a89523b3ab60f4942615d0a8f2512a187c79bd26 100644
--- a/src/core/surface/channel.c
+++ b/src/core/surface/channel.c
@@ -69,7 +69,6 @@ struct grpc_channel {
   grpc_mdstr *grpc_compression_algorithm_string;
   grpc_mdstr *grpc_encodings_accepted_by_peer_string;
   grpc_mdstr *grpc_message_string;
-  grpc_mdstr *content_type_string;
   grpc_mdstr *path_string;
   grpc_mdstr *authority_string;
   grpc_mdelem *default_authority;
@@ -112,8 +111,6 @@ grpc_channel *grpc_channel_create_from_filters(
       grpc_mdstr_from_string(mdctx, "grpc-accept-encoding", 0);
   channel->grpc_message_string =
       grpc_mdstr_from_string(mdctx, "grpc-message", 0);
-  channel->content_type_string =
-      grpc_mdstr_from_string(mdctx, "content-type", 0);
   for (i = 0; i < NUM_CACHED_STATUS_ELEMS; i++) {
     char buf[GPR_LTOA_MIN_BUFSIZE];
     gpr_ltoa((long)i, buf);
@@ -284,7 +281,6 @@ static void destroy_channel(void *p, int ok) {
   GRPC_MDSTR_UNREF(channel->grpc_compression_algorithm_string);
   GRPC_MDSTR_UNREF(channel->grpc_encodings_accepted_by_peer_string);
   GRPC_MDSTR_UNREF(channel->grpc_message_string);
-  GRPC_MDSTR_UNREF(channel->content_type_string);
   GRPC_MDSTR_UNREF(channel->path_string);
   GRPC_MDSTR_UNREF(channel->authority_string);
   while (channel->registered_calls) {
@@ -368,10 +364,6 @@ grpc_mdstr *grpc_channel_get_message_string(grpc_channel *channel) {
   return channel->grpc_message_string;
 }
 
-grpc_mdstr *grpc_channel_get_content_type_string(grpc_channel *channel) {
-  return channel->content_type_string;
-}
-
 gpr_uint32 grpc_channel_get_max_message_length(grpc_channel *channel) {
   return channel->max_message_length;
 }
diff --git a/src/core/surface/channel.h b/src/core/surface/channel.h
index 05fbc8d75cd3f78fd5bfaba00c41bfba455b648f..f271616f6063bafe4ecc553a347c723e9154f7fb 100644
--- a/src/core/surface/channel.h
+++ b/src/core/surface/channel.h
@@ -59,7 +59,6 @@ grpc_mdstr *grpc_channel_get_compression_algorithm_string(
 grpc_mdstr *grpc_channel_get_encodings_accepted_by_peer_string(
     grpc_channel *channel);
 grpc_mdstr *grpc_channel_get_message_string(grpc_channel *channel);
-grpc_mdstr *grpc_channel_get_content_type_string(grpc_channel *channel);
 gpr_uint32 grpc_channel_get_max_message_length(grpc_channel *channel);
 
 #ifdef GRPC_CHANNEL_REF_COUNT_DEBUG