Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

proxifying all the relative links does not always work #29

Closed
domsie opened this issue Aug 15, 2016 · 3 comments
Closed

proxifying all the relative links does not always work #29

domsie opened this issue Aug 15, 2016 · 3 comments

Comments

@domsie
Copy link

domsie commented Aug 15, 2016

Hi,

I just realized that not all relative urls set correctly.
Some relative urls are then hung on the 'Proxy URL'.

For example: [call the website http://bild.de via an instance of php-proxy]
404 error => http://[proxy-url.de]/community/static/ajax/numcoms/47270604:47289584

this file must be call via http://bild.de/community/static/ajax/numcoms/47270604:47289584

Can this be because "HeaderRewritePlugin.php" explicitly asks if there is a value for header->location set and only when set sets a "proxify_url"?

HeaderRewritePlugin.php

        // proxify header location value
        if($response->headers->has('location')){

            $location = $response->headers->get('location');

            // just in case this is a relative url like: /en
            $response->headers->set('location', proxify_url($location, $request_url));
        }

ProxifyPlugin.php

    public function onCompleted(ProxyEvent $event){

    // to be used when proxifying all the relative links
    $this->base_url = $event['request']->getUri();
@domsie
Copy link
Author

domsie commented Aug 22, 2016

one problem is when the website loads scripts "on other ways" than the ProxifyPlugin.php wants to replace the sources for relative urls via certain regex expressions:

e.g.: chip.de loads some scripts so: [www.chip.de/Downloads_13649224.html]

<script type="text/javascript" src="/js/_merged/efws.js?t=48766"></script>
<script type="text/javascript">
EFWS.Script.loadScripts([
'/js/_merged/jQuery.js?t=61946',
'/js/_merged/jQueryUI.js?t=60289',
'/js/_merged/global.js?t=64771',
'/js/_merged/navseiten.js?t=60257'], '');
</script>

@domsie
Copy link
Author

domsie commented Aug 30, 2016

made following changes at proxifyplugin.php to set the url path from relativ to absolute within ajax calls:

` $request_uri = $this->base_url;
$tmp = parse_url($this->base_url);
$base_host = $tmp['scheme'].'://'.$tmp['host'];
if (substr($base_host, -1) !== '/') {
$base_host = $base_host.'/';
}
$base_host_unencoded = $base_host;

    $jquery  = '<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous" type="text/javascript"></script>';
    $jquery .= '<script type="text/javascript">';
    $jquery .= 'var jQuery_atp = jQuery.noConflict(true);';
    $jquery .= '(function ($) {';
    $jquery .= 'var baseHref = $("head base").attr("href");';
    $jquery .= '$.ajaxSetup({';
    $jquery .= 'beforeSend: function(xhr, options) {';
    $jquery .= 'options.url = baseHref + options.url;';
    $jquery .= '}';
    $jquery .= '});';
    $jquery .= '}(jQuery_atp));';
    $jquery .= '</script>';

    $str = str_replace('</title>','</title><base href="'.$base_host_unencoded.'" />'.$jquery,$str);
    $response->setContent($str);` 

@Athlon1600
Copy link
Owner

So is everything okay from your side now? Because I don't see any errors myself when I visit bild.de apart from those created by "EFWS.Script.loadScripts(["

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants