@@ -351,23 +351,7 @@ pub const Page = struct {
351351 return ;
352352 }
353353
354- // own the url
355- self .rawuri = try arena .dupe (u8 , uri );
356- self .uri = std .Uri .parse (self .rawuri .? ) catch try std .Uri .parseAfterScheme ("" , self .rawuri .? );
357-
358- self .url = try URL .constructor (arena , self .rawuri .? , null );
359- self .location .url = & self .url .? ;
360- try self .session .window .replaceLocation (& self .location );
361-
362- // prepare origin value.
363- var buf : std .ArrayListUnmanaged (u8 ) = .{};
364- try self .uri .writeToStream (.{
365- .scheme = true ,
366- .authority = true ,
367- }, buf .writer (arena ));
368- self .origin = buf .items ;
369-
370- // TODO handle fragment in url.
354+ self .uri = std .Uri .parse (uri ) catch try std .Uri .parseAfterScheme ("" , uri );
371355
372356 self .session .app .telemetry .record (.{ .navigate = .{
373357 .proxy = false ,
@@ -380,7 +364,37 @@ pub const Page = struct {
380364
381365 var response = try request .sendSync (.{});
382366 const header = response .header ;
383- try self .session .cookie_jar .populateFromResponse (self .uri , & header );
367+ try self .session .cookie_jar .populateFromResponse (request .uri , & header );
368+
369+ // update uri after eventual redirection
370+ var buf : std .ArrayListUnmanaged (u8 ) = .{};
371+ defer buf .deinit (arena );
372+
373+ buf .clearRetainingCapacity ();
374+ try request .uri .writeToStream (.{
375+ .scheme = true ,
376+ .authentication = true ,
377+ .authority = true ,
378+ .path = true ,
379+ .query = true ,
380+ .fragment = true ,
381+ }, buf .writer (arena ));
382+ self .rawuri = try buf .toOwnedSlice (arena );
383+
384+ self .uri = try std .Uri .parse (self .rawuri .? );
385+
386+ // TODO handle fragment in url.
387+ self .url = try URL .constructor (arena , self .rawuri .? , null );
388+ self .location .url = & self .url .? ;
389+ try self .session .window .replaceLocation (& self .location );
390+
391+ // prepare origin value.
392+ buf .clearRetainingCapacity ();
393+ try request .uri .writeToStream (.{
394+ .scheme = true ,
395+ .authority = true ,
396+ }, buf .writer (arena ));
397+ self .origin = try buf .toOwnedSlice (arena );
384398
385399 log .info ("GET {any} {d}" , .{ self .uri , header .status });
386400
0 commit comments