log warning about "URL query contains semicolon"
2023/02/20 14:08:03 http: URL query contains semicolon, which is no longer a supported separator; parts of the query may be stripped when parsed; see golang.org/issue/25192
2023/02/20 14:08:36 http: URL query contains semicolon, which is no longer a supported separator; parts of the query may be stripped when parsed; see golang.org/issue/25192
2023/02/20 14:09:07 http: URL query contains semicolon, which is no longer a supported separator; parts of the query may be stripped when parsed; see golang.org/issue/25192
2023/02/20 14:29:58 http: URL query contains semicolon, which is no longer a supported separator; parts of the query may be stripped when parsed; see golang.org/issue/25192
As per https://github.com/golang/go/issues/25192, it seems that some of the requests we are getting include a non-escaped (?) semi-colon in the URL query. It would be great if we could identify those requests to see what is actually being requested and why is there a semicolon in the URL query.
For example, accessing /ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am?download=true;filename=hello.txt will trigger that warning. My two ideas of why's this happening are:
- Some old client is making requests using
;as a separator instead of& - Some clients are not properly escaping the value of the query values. Maybe they want a
filename=something;something.goand they're not escaping properly (I don't know why you would want that, but it is possible)
Thanks, makes sense.
We are unable to control broken/legacy clients, nor should we write any special code for this – the linked https://github.com/golang/go/issues/25192 is a good read how printing this warning was the only way to ping people without breaking existing apps.
I see golang removed this warning last week: https://github.com/golang/go/commit/133e0bca0be23980604ee98589ddcacdb1262afd so no action needed on our end – will go away when we upgrade Dockerfile to go 0.21.
Let's keep this open until then.