Content-Type for files uploaded via S3 automatically set to application/xml
- Lingua principale
- C++
- Stelle
- 2.2k
- Fork
- 1.2k
- Merge medio
- 4g 11h
- PR unite (30g)
- 13
Descrizione
### Describe the bug
When I upload a file to S3 (using a multipart upload request) the content-type of the file will be application/xml unless I specify otherwise. This seems incorrect as a content-type should be omitted if unknown or, at worst, default to application/octet-stream. Per RFC 7231 (3.1.1.5):
> A sender that generates a message containing a payload body SHOULD
> generate a Content-Type header field in that message unless the
> intended media type of the enclosed representation is unknown to the
> sender. If a Content-Type header field is not present, the recipient
> MAY either assume a media type of "application/octet-stream"
> ([RFC2046], Section 4.5.1) or examine the data to determine its type.
This ended up causing a bit of confusion here (https://github.com/apache/arrow/issues/11934). An S3 client was trying to be intelligent and inspect the XML data if the file was an XML file and this issue caused the client to inspect files it shouldn't.
### Expected behavior
If the content type of a file is not set then the file should either have no content-type or the content-type should be set to application/octet-stream.
### Current behavior
The file's content-type is set to application/xml
### Steps to Reproduce
Reproducible Gist: https://gist.github.com/westonpace/9c3a0baa48083f33aa4880c0cb6a602b
### Possible Solution
When the user does not specify a content-type either leave it unset or default to application/octet-stream
### AWS CPP SDK version used
1.8.185
### Compiler and Version used
GCC 9.3.0
### Operating System and version
Ubuntu 20.04.3
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia riproducendo il multipart upload con il Gist collegato usando AWS SDK for C++ 1.8.185, quindi traccia la gestione della richiesta S3 multipart upload per individuare dove viene assegnato application/xml quando non viene fornito alcun content type. Il lavoro è completato quando un content type non specificato viene omesso o inviato come application/octet-stream e il comportamento è stato verificato rispetto alla riproduzione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- aws, cpp
- Ambito
- cloud
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 42/100