Bug 188364 - Prefetching drops parameters, page loads anew once committed
Summary: Prefetching drops parameters, page loads anew once committed
Status: RESOLVED INVALID
Alias: None
Product: WebKit
Classification: Unclassified
Component: Page Loading (show other bugs)
Version: WebKit Local Build
Hardware: Mac macOS 10.13
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-08-06 16:27 PDT by Danil Sapegin
Modified: 2018-08-07 12:07 PDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Danil Sapegin 2018-08-06 16:27:43 PDT
I have very strange situation, while developing my web-app.

ONLY IF typing url address by myself (not pasting, not clicking link) browser loads destination url twice.

Using Google Chrome browser UA (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36)


nginx log with custom php error message with $_SERVER['REQUEST_TIME_FLOAT'] variable:
=============================================
2018/08/07 01:20:45 [error] 23861#23861: *62965279 FastCGI sent in stderr: "PHP message: +++++)_1533594045.681_(++++" while reading respo
nse header from upstream, client: 213.170.70.199, server: admin.smi.dev.parohod.biz, request: "GET /tags/groups/manage/ HTTP/1.1", upstre
am: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "admin.smi.dev.parohod.biz"
2018/08/07 01:20:45 [error] 23861#23861: *62965279 FastCGI sent in stderr: "PHP message: +++++)_1533594045.8943_(++++" while reading resp
onse header from upstream, client: 213.170.70.199, server: admin.smi.dev.parohod.biz, request: "GET /tags/groups/manage/ HTTP/1.1", upstr
eam: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "admin.smi.dev.parohod.biz"
=============================================

but request for first time sent to server without GET params (REQUEST_URI variable doesn't content any ?foo=bar), executed and than sent second time as expected (with GET params)


one more time.
I typed URL /tags/groups/manage/?foo=bar
Pressed enter (once)
and here more nginx log (with my comments between ###)
=============================================
### this is processed request without ?foo=bar ###
2018/08/07 02:19:47 [error] 24159#24159: *62985029 FastCGI sent in stderr: "PHP message: REQUEST_TIME_FLOAT: 1533597587.0024
PHP message: REQUEST_URI: /tags/groups/manage/" while reading response header from upstream, client: 213.170.70.199, server: admin.smi.dev.parohod.biz, request: "GET /tags/groups/manage/ HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "admin.smi.dev.parohod.biz"

### this is processed original request as expected, with GET vars ###
2018/08/07 02:19:48 [error] 24159#24159: *62985029 FastCGI sent in stderr: "PHP message: REQUEST_TIME_FLOAT: 1533597587.9976
PHP message: REQUEST_URI: /tags/groups/manage/?foo=bar" while reading response header from upstream, client: 213.170.70.199, server: admin.smi.dev.parohod.biz, request: "GET /tags/groups/manage/?foo=bar HTTP/1.1", upstream: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "admin.smi.dev.parohod.biz"
=============================================

it is looks like error in my app logic, but I think it's not true, I spent for 5 hours debugging and it's not my bug..


I repeated this behavior in Yandex.Browser (18.6.1.768 (64-bit)), Safari (Version 11.1.2 (13605.3.8)) and it works same, BUT in firefox (61.0.1 (64-bit)) same page works perfect!
Comment 1 Alexey Proskuryakov 2018-08-07 12:07:46 PDT
Loading while typing a URL is intentional prefetching. Obviously, a second load seems unexpected, as the prefetched page should be used - and it also seems unexpected that the parameters get omitted in prefetch.

However, prefetching is implemented in Safari, not in WebKit. Please file a bug for Safari via https://bugreport.apple.com for Apple engineers to take a look.