Bug 85374 - http "referer" header not properly set when using HTML5 pushState
: http "referer" header not properly set when using HTML5 pushState
Status: RESOLVED FIXED
: WebKit
History
: 528+ (Nightly build)
: Macintosh Intel Mac OS X 10.7
: P2 Major
Assigned To:
:
:
:
:
  Show dependency treegraph
 
Reported: 2012-05-02 07:42 PST by
Modified: 2012-05-07 02:06 PST (History)


Attachments
Patch (5.01 KB, patch)
2012-05-04 06:07 PST, jochen@chromium.org
no flags Review Patch | Details | Formatted Diff | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2012-05-02 07:42:30 PST
Given I am on "bar.html", and I run following javascript:

history.pushState( {}, "page1", "foo.html");
history.back(); // going back to "bar.html"
location.href = "fuffy.html";

The fuffy.html will be requested with "referer: foo.html" header, even though request is originating from "bar.html".
------- Comment #1 From 2012-05-02 07:43:43 PST -------
If you use the browser's back button (instead history.back()), the outcome is the same.
------- Comment #2 From 2012-05-02 10:47:54 PST -------
Nifty.
------- Comment #3 From 2012-05-02 14:45:27 PST -------
looks like history.back() doesn't properly update FrameLoader::m_outgoingReferrer
------- Comment #4 From 2012-05-04 06:07:02 PST -------
Created an attachment (id=140201) [details]
Patch
------- Comment #5 From 2012-05-04 09:42:20 PST -------
(From update of attachment 140201 [details])
Clearing flags on attachment: 140201

Committed r116113: <http://trac.webkit.org/changeset/116113>
------- Comment #6 From 2012-05-04 09:42:25 PST -------
All reviewed patches have been landed.  Closing bug.
------- Comment #7 From 2012-05-05 00:16:20 PST -------
I'm total newb and this was my first bug report.. so i have no clue what is going on here :)
Is there any js snippet that I can inject to make this work for older webkit browsers? I use this feature in production and this bug makes it impossible. I'd need to manually pass referrer everywhere..
------- Comment #8 From 2012-05-05 04:45:07 PST -------
I think history.replaceState(history.state, "", ""); after the popstate event triggered by history.back(); should set the correct referrer on older webkits, but I haven't tried it.
------- Comment #9 From 2012-05-07 02:06:14 PST -------
I've tried it.. but unfortunately it doesn't work :( Any other ideas?

(In reply to comment #8)
> I think history.replaceState(history.state, "", ""); after the popstate event triggered by history.back(); should set the correct referrer on older webkits, but I haven't tried it.