URL prefix breaks reverse proxy
Submitted by user2352352 on Sun, 08/20/2017 - 16:19
We have an installation of h5p that sits behind a reverse proxy.
This code on line 1998 of h5p.classes.php causes many things such as the video controls in the video player to break:
/**
* Combines path with cache buster / version.
*
* @param array $assets
* @return array
*/
public function getAssetsUrls($assets) {
$urls = array();
foreach ($assets as $asset) {
$url = $asset->path;
// Add URL prefix if not external
if (strpos($asset->path, '://') === FALSE) {
$url = $this->url . $url;
}
// Add version/cache buster if set
if (isset($asset->version)) {
$url .= $asset->version;
}
$urls[] = $url;
}
return $urls;
}
This line is the problem:
$url = $this->url . $url;
This results in a hard-coded URL that doesn't work when behind a reverse proxy.
Is there a reason why a fully-qualified hard-coded URL is needed here?
Is there any way to change this to a relative path?
thomasmars
Mon, 08/21/2017 - 09:40
Permalink
Hi,Which cms integration are
Hi,
Which cms integration are you using ?
I tested this in Drupal, and it should return a relative url for your assets as long as your assets are not external. This does depend on what the base_path() for your site returns. Do you have any insight to why the $url returned is not a relative url ? In most setups $this->url will just be a "/" which would make the final URL a relative url. What is returned for you ?