diff --git a/mwclient/client.py b/mwclient/client.py
index 76813296531df1b42cdcb2aadd10f973ca9fee13..1a90d0ff212f2f2ec8aa8f08fc94f2748ab8b143 100644
--- a/mwclient/client.py
+++ b/mwclient/client.py
@@ -53,7 +53,7 @@ class Site(object):
                  max_retries=25, wait_callback=lambda *x: None, clients_useragent=None,
                  max_lag=3, compress=True, force_login=True, do_init=True, httpauth=None,
                  reqs=None, consumer_token=None, consumer_secret=None, access_token=None,
-                 access_secret=None, client_certificate=None):
+                 access_secret=None, client_certificate=None, custom_headers=None):
         # Setup member variables
         self.host = host
         self.path = path
@@ -101,6 +101,8 @@ class Site(object):
                     url='https://github.com/mwclient/mwclient'
                 )
             )
+            if custom_headers:
+                self.connection.headers.update(custom_headers)
         else:
             self.connection = pool
 
diff --git a/tests/test_client.py b/tests/test_client.py
index bcf7e0310578466a92454b1cb2323465843fca7c..4e4c32806c614acce17b4cfcf693c8bce682829a 100644
--- a/tests/test_client.py
+++ b/tests/test_client.py
@@ -155,6 +155,16 @@ class TestClient(TestCase):
 
         assert 'MyFabulousClient' in responses.calls[0].request.headers['user-agent']
 
+    @responses.activate
+    def test_custom_headers_are_sent(self):
+        # Custom headers should be sent to the server
+
+        self.httpShouldReturn(self.metaResponseAsJson())
+
+        site = mwclient.Site('test.wikipedia.org', custom_headers={'X-Wikimedia-Debug': 'host=mw1099.eqiad.wmnet; log'})
+
+        assert 'host=mw1099.eqiad.wmnet; log' in responses.calls[0].request.headers['X-Wikimedia-Debug']
+
     @responses.activate
     def test_basic_request(self):