swift/test/s3api
Tim Burke f6ac7d4491 Tolerate absolute-form request targets
We've seen S3 clients expecting to be able to send request lines like

    GET https://cluster.domain/bucket/key HTTP/1.1

instead of the expected

    GET /bucket/key HTTP/1.1

Testing against other, independent servers with something like

    ( echo -n $'GET https://www.google.com/ HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n' ; sleep 1 ) | openssl s_client -connect www.google.com:443

suggests that it may be reasonable to accept them; the RFC even goes so
far as to say

> To allow for transition to the absolute-form for all requests in some
> future version of HTTP, a server MUST accept the absolute-form in
> requests, even though HTTP/1.1 clients will only send them in
> requests to proxies.

(See https://datatracker.ietf.org/doc/html/rfc7230#section-5.3.2)

Fix it at the protocol level, so everywhere else we can mostly continue
to assume that PATH_INFO starts with a / like we always have.

Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
Change-Id: I04012e523f01e910f41d5a41cdd86d3d2a1b9c59
2023-01-03 12:49:30 -08:00
..
__init__.py tests: Tolerate NoSuchBucket errors when cleaning up 2022-11-07 11:41:06 -08:00
test_mpu.py Malformed CompleteMultipartUpload request should 400 2022-12-01 15:55:15 -08:00
test_request_target_style.py Tolerate absolute-form request targets 2023-01-03 12:49:30 -08:00
test_service.py s3api: Implement object versioning API 2020-01-28 14:00:08 -08:00
test_versioning.py replace md5 with swift utils version 2020-12-15 09:52:55 -05:00