diff --git a/lib/SimpleSAML/Error/Error.php b/lib/SimpleSAML/Error/Error.php
index 92050111d394633ee14d28d17f48bbe463f92944..78156072846b9e19be84563588b73427106357af 100644
--- a/lib/SimpleSAML/Error/Error.php
+++ b/lib/SimpleSAML/Error/Error.php
@@ -102,6 +102,19 @@ class SimpleSAML_Error_Error extends SimpleSAML_Error_Exception {
 		$config = SimpleSAML_Configuration::getInstance();
 		$session = SimpleSAML_Session::getInstance();
 
+		if (isset($_SERVER['HTTP_REFERER'])) {
+			$referer = $_SERVER['HTTP_REFERER'];
+			/*
+			 * Remove anything after the first '?' or ';', just
+			 * in case it contains any sensitive data.
+			 */
+			$referer = explode('?', $referer, 2);
+			$referer = $referer[0];
+			$referer = explode(';', $referer, 2);
+			$referer = $referer[0];
+		} else {
+			$referer = 'unknown';
+		}
 		$errorData = array(
 			'exceptionMsg' => $emsg,
 			'exceptionTrace' => $etrace,
@@ -109,6 +122,7 @@ class SimpleSAML_Error_Error extends SimpleSAML_Error_Exception {
 			'trackId' => $session->getTrackID(),
 			'url' => SimpleSAML_Utilities::selfURLNoQuery(),
 			'version' => $config->getVersion(),
+			'referer' => $referer,
 		);
 		$session->setData('core:errorreport', $reportId, $errorData);
 
diff --git a/www/errorreport.php b/www/errorreport.php
index addf56a3c160761972ba4b0a00fb75ec6eb8c15d..83630750a60eb178fa7e010379cb1db553f281ae 100644
--- a/www/errorreport.php
+++ b/www/errorreport.php
@@ -28,6 +28,7 @@ if ($data === NULL) {
 		'trackId' => $session->getTrackId(),
 		'url' => 'not set',
 		'version' => $config->getVersion(),
+		'referer' => 'not set',
 	);
 }
 
@@ -58,6 +59,8 @@ $message = '<h1>SimpleSAMLphp Error Report</h1>
 
 <p>Report ID: <tt>' . $data['reportId'] . '</tt></p>
 
+<p>Referer: <tt>' . htmlspecialchars($data['referer']) . '</tt></p>
+
 <hr />
 <div class="footer">This message was sent using simpleSAMLphp. Visit <a href="http://rnd.feide.no/simplesamlphp">simpleSAMLphp homepage</a>.</div>