summaryrefslogtreecommitdiffstats
path: root/webkit/glue
diff options
context:
space:
mode:
authorjaphet@chromium.org <japhet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-30 16:45:35 +0000
committerjaphet@chromium.org <japhet@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-30 16:45:35 +0000
commit0dc954a798b02e7194217b2c9193f93cedf50348 (patch)
treebe4931355f7e54da351954fcfa35219fdc6396e5 /webkit/glue
parent79f066fe8717dfd6ba7a3453a18e6f4128faa9e4 (diff)
downloadchromium_src-0dc954a798b02e7194217b2c9193f93cedf50348.zip
chromium_src-0dc954a798b02e7194217b2c9193f93cedf50348.tar.gz
chromium_src-0dc954a798b02e7194217b2c9193f93cedf50348.tar.bz2
If we receive a redirect response, we should copy the http referer field from the old request.
BUG=7357 TEST=none Review URL: http://codereview.chromium.org/470010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35379 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue')
-rw-r--r--webkit/glue/weburlloader_impl.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/webkit/glue/weburlloader_impl.cc b/webkit/glue/weburlloader_impl.cc
index df2a601..55f022c 100644
--- a/webkit/glue/weburlloader_impl.cc
+++ b/webkit/glue/weburlloader_impl.cc
@@ -17,6 +17,7 @@
#include "net/base/net_util.h"
#include "net/http/http_response_headers.h"
#include "third_party/WebKit/WebKit/chromium/public/WebHTTPHeaderVisitor.h"
+#include "third_party/WebKit/WebKit/chromium/public/WebSecurityPolicy.h"
#include "third_party/WebKit/WebKit/chromium/public/WebURL.h"
#include "third_party/WebKit/WebKit/chromium/public/WebURLError.h"
#include "third_party/WebKit/WebKit/chromium/public/WebURLLoaderClient.h"
@@ -32,7 +33,9 @@ using base::TimeDelta;
using WebKit::WebData;
using WebKit::WebHTTPBody;
using WebKit::WebHTTPHeaderVisitor;
+using WebKit::WebSecurityPolicy;
using WebKit::WebString;
+using WebKit::WebURL;
using WebKit::WebURLError;
using WebKit::WebURLLoader;
using WebKit::WebURLLoaderClient;
@@ -413,6 +416,12 @@ bool WebURLLoaderImpl::Context::OnReceivedRedirect(
// request that resulted from the redirect.
WebURLRequest new_request(new_url);
new_request.setFirstPartyForCookies(request_.firstPartyForCookies());
+
+ WebString referrer_string = WebString::fromUTF8("Referer");
+ WebString referrer = request_.httpHeaderField(referrer_string);
+ if (!WebSecurityPolicy::shouldHideReferrer(new_url, referrer))
+ new_request.setHTTPHeaderField(referrer_string, referrer);
+
if (response.httpStatusCode() == 307)
new_request.setHTTPMethod(request_.httpMethod());