diff --git a/apps/bookmarks/templates/list.php b/apps/bookmarks/templates/list.php
index a6053184aa22041bc435f3e356cbef71b72b183a..d4215e82ddb48a0a77a31ed1f46551bbb5c7ae66 100644
--- a/apps/bookmarks/templates/list.php
+++ b/apps/bookmarks/templates/list.php
@@ -2,7 +2,7 @@
 <h2 class="bookmarks_headline"><?php echo isset($_GET["tag"]) ? 'Bookmarks with tag: ' . urldecode($_GET["tag"]) : 'All bookmarks'; ?></h2>
 <div class="bookmarks_menu">
 	<input type="button" class="bookmarks_addBtn" value="Add Bookmark"/>&nbsp;
-	<a class="bookmarks_addBml" href="javascript:var url = encodeURIComponent(location.href);window.open('<?php echo (isset($_SERVER['HTTPS']) ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . OC_Helper::linkTo('bookmarks', 'addBm.php'); ?>?url='+url, 'owncloud-bookmarks');" title="Drag this to your browser bookmarks and click it, when you want to bookmark a webpage.">Add page to ownCloud</a>
+	<a class="bookmarks_addBml" href="javascript:var url = encodeURIComponent(location.href);window.open('<?php echo OC_Helper::linkTo('bookmarks', 'addBm.php', null, true); ?>?url='+url, 'owncloud-bookmarks');" title="Drag this to your browser bookmarks and click it, when you want to bookmark a webpage.">Add page to ownCloud</a>
 </div>
 <div class="bookmarks_add">
 	<p><label class="bookmarks_label">Address</label><input type="text" id="bookmark_add_url" class="bookmarks_input" /></p>
diff --git a/apps/files_publiclink/admin.php b/apps/files_publiclink/admin.php
index f5163547963dabd04d53a5646abf5bfd79e35162..33d8f04a603b0a2a8edc45745d58cd07266a452a 100644
--- a/apps/files_publiclink/admin.php
+++ b/apps/files_publiclink/admin.php
@@ -37,11 +37,7 @@ OC_App::setActiveNavigationEntry( "files_publiclink_administration" );
 
 OC_Util::addScript( 'files_publiclink', 'admin' );
 
-if(isset($_SERVER['HTTPS'])) {
-	$baseUrl= "https://". $_SERVER['SERVER_NAME'] . OC_Helper::linkTo('files_publiclink','get.php');
-}else{
-	$baseUrl= "http://". $_SERVER['SERVER_NAME'] . OC_Helper::linkTo('files_publiclink','get.php');
-}
+$baseUrl = OC_Helper::linkTo('files_publiclink','get.php', null, true);
 
 
 // return template
diff --git a/apps/media/lib_ampache.php b/apps/media/lib_ampache.php
index a0123f87c5164db75ad4e5406ddb89b9a578c05e..b3bd7b16189e8189ee74b4a97030552402fa82c2 100644
--- a/apps/media/lib_ampache.php
+++ b/apps/media/lib_ampache.php
@@ -166,11 +166,6 @@ class OC_MEDIA_AMPACHE{
 		}
 		$artistName=utf8_decode(htmlentities($artistName));
 		$albumName=utf8_decode(htmlentities($albumName));
-		if (isset($_SERVER['HTTPS'])) {
-			$PROTO="https://";
-		} else {
-			$PROTO="http://";
-		}
 		$id=$song['song_id'];
 		$name=utf8_decode(htmlentities($song['song_name']));
 		$artist=$song['song_artist'];
@@ -179,7 +174,7 @@ class OC_MEDIA_AMPACHE{
 		echo("\t\t<title>$name</title>\n");
 		echo("\t\t<artist id='$artist'>$artistName</artist>\n");
 		echo("\t\t<album id='$album'>$albumName</album>\n");
-		$url="$PROTO{$_SERVER["HTTP_HOST"]}$WEBROOT/apps/media/server/xml.server.php?action=play&song=$id&auth={$_GET['auth']}";
+		$url=OC_Helper::linkTo('media', 'server/xml.server.php', null, true)."?action=play&song=$id&auth={$_GET['auth']}";
 		$url=htmlentities($url);
 		echo("\t\t<url>$url</url>\n");
 		echo("\t\t<time>{$song['song_length']}</time>\n");
diff --git a/apps/user_openid/appinfo/app.php b/apps/user_openid/appinfo/app.php
index 3cdf2664e8168b1d566f44688f217703dac0201c..886265cd312eeff0997ed67cfde50c06c6ba9a63 100644
--- a/apps/user_openid/appinfo/app.php
+++ b/apps/user_openid/appinfo/app.php
@@ -5,8 +5,6 @@ if (!in_array ('curl', get_loaded_extensions())){
 	return;
 }
 
-$urlBase=((isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'];
-
 $userName='';
 if(strpos($_SERVER["REQUEST_URI"],'?') and !strpos($_SERVER["REQUEST_URI"],'=')){
 	if(strpos($_SERVER["REQUEST_URI"],'/?')){
@@ -16,8 +14,8 @@ if(strpos($_SERVER["REQUEST_URI"],'?') and !strpos($_SERVER["REQUEST_URI"],'='))
 	}
 }
 
-OC_Util::addHeader('link',array('rel'=>'openid.server', 'href'=>$urlBase.OC_Helper::linkTo( "user_openid", "user.php" ).'/'.$userName));
-OC_Util::addHeader('link',array('rel'=>'openid.delegate', 'href'=>$urlBase.OC_Helper::linkTo( "user_openid", "user.php" ).'/'.$userName));
+OC_Util::addHeader('link',array('rel'=>'openid.server', 'href'=>OC_Helper::linkTo( "user_openid", "user.php", null, true ).'/'.$userName));
+OC_Util::addHeader('link',array('rel'=>'openid.delegate', 'href'=>$OC_Helper::linkTo( "user_openid", "user.php", null, true ).'/'.$userName));
 
 OC_APP::registerPersonal('user_openid','settings');
 
diff --git a/apps/user_openid/user.php b/apps/user_openid/user.php
index 3743d232b6d482066e1f70c9f3a6e054276cee88..52fa10473441f690483f4ee749a53b03fe2d419f 100644
--- a/apps/user_openid/user.php
+++ b/apps/user_openid/user.php
@@ -43,7 +43,7 @@ if(!OC_User::userExists($USERNAME)){
 	$USERNAME='';
 }
 global $WEBROOT;
-$IDENTITY=((isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].$WEBROOT.'/apps/user_openid/user.php/'.$USERNAME;
+$IDENTITY=OC_Helper::linkTo( "user_openid", "user.php", null, true ).'/'.$USERNAME;
 
 require_once 'phpmyid.php';
 
diff --git a/lib/helper.php b/lib/helper.php
index 272f4607011ac085fe95c3f3e08dd7b98222ff1c..d9b47280ff7ae9008e9f0d2b22f7a8ea575e3841 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -34,7 +34,7 @@ class OC_Helper {
 	 *
 	 * Returns a url to the given app and file.
 	 */
-	public static function linkTo( $app, $file , $redirect_url=NULL ){
+	public static function linkTo( $app, $file, $redirect_url=NULL, $absolute=false ){
 		global $WEBROOT;
 		global $SERVERROOT;
 		
@@ -57,6 +57,12 @@ class OC_Helper {
 			}
 		}
 
+		if($absolute){
+			// Checking if the request was made through HTTPS. The last in line is for IIS
+			$protocol = isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!='off');
+			$urlLinkTo = ($protocol?'https':'http') . '://'  . $_SERVER['HTTP_HOST'] . $urlLinkTo;
+		}
+
 		if($redirect_url)
 			return $urlLinkTo.'?redirect_url='.$redirect_url;
 		else
diff --git a/settings/templates/personal.php b/settings/templates/personal.php
index decda043b8a4848fd27945d5d71115c79473aa10..65a6f12712b68252640e2fdb7caf0d977e79e35d 100644
--- a/settings/templates/personal.php
+++ b/settings/templates/personal.php
@@ -33,7 +33,7 @@
 
 <p class="personalblock">
 	<strong>WebDAV</strong>
-	<?php echo ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].OC::$WEBROOT.'/files/webdav.php'; ?><br />
+	<?php echo OC_Helper::linkTo('files', 'webdav.php', null, true); ?><br />
 	<em><?php echo $l->t('use this address to connect to your ownCloud in your file manager');?></em>
 </p>