Bug 188364
Summary: | Prefetching drops parameters, page loads anew once committed | ||
---|---|---|---|
Product: | WebKit | Reporter: | Danil Sapegin <danil.sapegin> |
Component: | Page Loading | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED INVALID | ||
Severity: | Normal | CC: | ap, beidson |
Priority: | P2 | ||
Version: | WebKit Local Build | ||
Hardware: | Mac | ||
OS: | macOS 10.13 |
Danil Sapegin
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!
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Alexey Proskuryakov
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.