Graph.prototype.openLink = function(href, target, allowOpener)
{
	var result = window;
	
	try
	{
		// Workaround for blocking in same iframe
		if (target == '_self' && window != window.top)
		{
			window.location.href = href;
		}
		else
		{
			// Avoids page reload for anchors (workaround for IE but used everywhere)
			if (href.substring(0, this.baseUrl.length) == this.baseUrl &&
				href.charAt(this.baseUrl.length) == '#' &&
				target == '_top' && window == window.top)
			{
				var hash = href.split('#')[1];
	
				// Forces navigation if on same hash
				if (window.location.hash == '#' + hash)
				{
					window.location.hash = '';
				}
				
				window.location.hash = hash;
			}
			else
			{
				result = window.open(href, (target != null) ? target : '_blank');
	
				if (result != null && !allowOpener)
				{
					result.opener = null;
				}
			}
		}
	}
	catch (e)
	{
		// ignores permission denied
	}
	
	return result;
};
The web server receives a URL or similar request from an upstream component and retrieves the contents of this URL, but it does not sufficiently ensure that the request is being sent to the expected destination.