diff --git a/ghttp/handlers.go b/ghttp/handlers.go
index 52fcd43..c3b56a4 100644
--- a/ghttp/handlers.go
+++ b/ghttp/handlers.go
@@ -190,7 +190,9 @@
 	} else {
 		headers = make(http.Header)
 	}
-	headers["Content-Type"] = []string{"application/json"}
+	if _, found := headers["Content-Type"]; !found {
+		headers["Content-Type"] = []string{"application/json"}
+	}
 	return RespondWith(statusCode, string(data), headers)
 }
 
@@ -214,7 +216,9 @@
 		} else {
 			headers = make(http.Header)
 		}
-		headers["Content-Type"] = []string{"application/json"}
+		if _, found := headers["Content-Type"]; !found {
+			headers["Content-Type"] = []string{"application/json"}
+		}
 		copyHeader(headers, w.Header())
 		w.WriteHeader(*statusCode)
 		w.Write(data)
diff --git a/ghttp/test_server_test.go b/ghttp/test_server_test.go
index 40836a1..82aa3aa 100644
--- a/ghttp/test_server_test.go
+++ b/ghttp/test_server_test.go
@@ -583,10 +583,15 @@
 			})
 
 			Context("when optional headers are set", func() {
+				var headers http.Header
 				BeforeEach(func() {
+					headers = http.Header{"Stuff": []string{"things"}}
+				})
+
+				JustBeforeEach(func() {
 					s.AppendHandlers(CombineHandlers(
 						VerifyRequest("POST", "/foo"),
-						RespondWithJSONEncoded(http.StatusCreated, []int{1, 2, 3}, http.Header{"Stuff": []string{"things"}}),
+						RespondWithJSONEncoded(http.StatusCreated, []int{1, 2, 3}, headers),
 					))
 				})
 
@@ -603,6 +608,19 @@
 
 					Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"}))
 				})
+
+				Context("when setting the Content-Type explicitly", func() {
+					BeforeEach(func() {
+						headers["Content-Type"] = []string{"not-json"}
+					})
+
+					It("should use the Content-Type header that was explicitly set", func() {
+						resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+						Ω(err).ShouldNot(HaveOccurred())
+
+						Ω(resp.Header["Content-Type"]).Should(Equal([]string{"not-json"}))
+					})
+				})
 			})
 		})
 
@@ -650,12 +668,17 @@
 			})
 
 			Context("when optional headers are set", func() {
+				var headers http.Header
 				BeforeEach(func() {
+					headers = http.Header{"Stuff": []string{"things"}}
+				})
+
+				JustBeforeEach(func() {
 					code = http.StatusOK
 					object = testObject{}
 					s.AppendHandlers(CombineHandlers(
 						VerifyRequest("POST", "/foo"),
-						RespondWithJSONEncodedPtr(&code, &object, http.Header{"Stuff": []string{"things"}}),
+						RespondWithJSONEncodedPtr(&code, &object, headers),
 					))
 				})
 
@@ -672,6 +695,19 @@
 
 					Ω(resp.Header["Content-Type"]).Should(Equal([]string{"application/json"}))
 				})
+
+				Context("when setting the Content-Type explicitly", func() {
+					BeforeEach(func() {
+						headers["Content-Type"] = []string{"not-json"}
+					})
+
+					It("should use the Content-Type header that was explicitly set", func() {
+						resp, err = http.Post(s.URL()+"/foo", "application/json", nil)
+						Ω(err).ShouldNot(HaveOccurred())
+
+						Ω(resp.Header["Content-Type"]).Should(Equal([]string{"not-json"}))
+					})
+				})
 			})
 		})
 	})
