Browse files

Fix empty response bodies when redirect URL's are empty.

When redirecting XHR requests to an empty URL the response body should
not be overwritten.

Fixes #3835
  • Loading branch information...
1 parent 9147f54 commit e23c4ffad90797cef2762be9a8e4f04beca9e657 @markstory markstory committed May 17, 2013
View
3 lib/Cake/Controller/Component/RequestHandlerComponent.php
@@ -244,6 +244,9 @@ public function beforeRedirect(Controller $controller, $url, $status = null, $ex
if (!$this->request->is('ajax')) {
return;
}
+ if (empty($url)) {
+ return;
+ }
$_SERVER['REQUEST_METHOD'] = 'GET';
foreach ($_POST as $key => $val) {
unset($_POST[$key]);
View
17 lib/Cake/Test/Case/Controller/Component/RequestHandlerComponentTest.php
@@ -412,6 +412,23 @@ public function testNonAjaxRedirect() {
}
/**
+ * test that redirects with ajax and no url don't do anything.
+ *
+ * @return void
+ */
+ public function testAjaxRedirectWithNoUrl() {
+ $_SERVER['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
+ $this->Controller->response = $this->getMock('CakeResponse');
+
+ $this->Controller->response->expects($this->never())
+ ->method('body');
+
+ $this->RequestHandler->initialize($this->Controller);
+ $this->RequestHandler->startup($this->Controller);
+ $this->assertNull($this->RequestHandler->beforeRedirect($this->Controller, null));
+ }
+
+/**
* testRenderAs method
*
* @return void

0 comments on commit e23c4ff

Please sign in to comment.