@@ -42,6 +42,7 @@ abstract class Client
42
42
43
43
private $ maxRedirects = -1 ;
44
44
private $ redirectCount = 0 ;
45
+ private $ redirects = array ();
45
46
private $ isMainRequest = true ;
46
47
47
48
/**
@@ -328,6 +329,8 @@ public function request($method, $uri, array $parameters = array(), array $files
328
329
}
329
330
330
331
if ($ this ->followRedirects && $ this ->redirect ) {
332
+ $ this ->redirects [spl_object_hash ($ this ->history ->current ())] = true ;
333
+
331
334
return $ this ->crawler = $ this ->followRedirect ();
332
335
}
333
336
@@ -430,7 +433,11 @@ protected function createCrawlerFromContent($uri, $content, $type)
430
433
*/
431
434
public function back ()
432
435
{
433
- return $ this ->requestFromRequest ($ this ->history ->back (), false );
436
+ do {
437
+ $ request = $ this ->history ->back ();
438
+ } while (array_key_exists (spl_object_hash ($ request ), $ this ->redirects ));
439
+
440
+ return $ this ->requestFromRequest ($ request , false );
434
441
}
435
442
436
443
/**
@@ -440,7 +447,11 @@ public function back()
440
447
*/
441
448
public function forward ()
442
449
{
443
- return $ this ->requestFromRequest ($ this ->history ->forward (), false );
450
+ do {
451
+ $ request = $ this ->history ->forward ();
452
+ } while (array_key_exists (spl_object_hash ($ request ), $ this ->redirects ));
453
+
454
+ return $ this ->requestFromRequest ($ request , false );
444
455
}
445
456
446
457
/**
0 commit comments