- From: Soni L. <fakedme+http@gmail.com>
- Date: Mon, 14 Aug 2023 20:55:36 -0300
- To: Matthew Kerwin <matthew@kerwin.net.au>
- Cc: HTTP Working Group <ietf-http-wg@w3.org>
On 2023-08-14 20:20, Matthew Kerwin wrote: > On Tue, 15 Aug 2023 at 02:33, Soni L. <fakedme+http@gmail.com> wrote: > > > > > > This is different from server push in that it relies on making > > assumptions about how the client behaves, and it works with HTTP/1.1 > > too. The User-Agent header and some other fingerprinting techniques > > might be necessary for sending the right thing tho. > > > > Is this already achievable with a link relation? It feels similar to > rel=canonical to me. > > Cheers It is not! This is entirely about being lazy. A realistic scenario: Software used: - Mastodon instance at sleeping.example - nginx in front of Mastodon Desired outcomes (sysadmin side): - Implement an API at /.well-known/protocol-handler?target={uri} Mastodon features and design choices: 1. Ability to remotely interact with an URI [effectively a protocol handler], at /authorize_interaction?uri={uri} 1.a. Redirects to local URI after fetching the post, e.g. /@RemoteUser@remote.example/1234567...9 Sysadmin choice: 1. Redirect from /.well-known/protocol-handler?target={uri} to /authorize_interaction?uri={uri} in nginx 1.a. Easier than implementing it in Mastodon, and less likely to break due to updates (less maintenance) Resulting flow, with HTTP/1.1, as seen from client: 1. [0ms] GET /.well-known/protocol-handler?target={uri} 2. [100ms] Location: /authorize_interaction?uri={uri} 3. [110ms] GET /authorize_interaction?uri={uri} 4. [210ms] Location: /@RemoteUser@remote.example/1234567...9 5. [220ms] GET /@RemoteUser@remote.example/1234567...9 6. [420ms] [...] (step 6 takes longer (+100ms) due to sleeping.example having to query remote.example) Resulting flow, with speculative execution, as seen from client: 1. [0ms] GET /.well-known/protocol-handler?target={uri} 2. [100ms] Location: /authorize_interaction?uri={uri} 3. [101ms] Location: /@RemoteUser@remote.example/1234567...9 4. [110ms] GET /authorize_interaction?uri={uri} 5. [120ms] GET /@RemoteUser@remote.example/1234567...9 6. [202ms][...] (step 3 is queued up and only processed after client sends out step 4. server already starts working on step 6 long before client requests it.)
Received on Monday, 14 August 2023 23:55:50 UTC