etalab / transport-qualite-des-donnees

2 stars 4 forks source link

Zippage incorrect du jeu Blablacar Bus sous Safari MacOS #5

Closed thbar closed 1 year ago

thbar commented 1 year ago

Si on suit les liens suivants:

et qu'on clique sur le lien (qui à l'heure où j'écris ce ticket est le suivant):

https://pro-real-time-api.blablacar.com/api/realtime/siri-lite/2.0/estimated-timetable.json?access_token=eyJhbGciOiJIUzUxMiJ9.eyJhdXRoIjoiUk9MRV9VU0VSIn0.cHEPrzRyWeZWBRhsQbNHy3mNnaprva1UGCHyux2H7wr9eCxgLj67Geum5XFs-oboDHbJJZRwLqDSAi9zuzzLrw

En utilisant Safari sous MacOS, le fichier qui est téléchargé s'appellera "estimated-timetable.json", alors que c'est en fait un zip. Il est du coup inexploitable, sauf à le renommer soi-même.

Avec d'autres navigateurs (de mémoire Edge sous Windows, et Chrome sur MacOS), le fichier s'appelle bien "estimated-timetables.zip" et peut être décompressé correctement.

Etude préliminaire

Si on fait un curl -I sur l'url dans un terminal, je remarque le header content-type: application/zip. Mais le nom du fichier passé via l'url ne correspond pas (extension en .json).

Je pense a priori que Chrome et Edge ont une heuristique différente pour ces cas, et renomment en .zip à la volée.

Il faudrait voir pourquoi Safari ne le fait pas.

Ca pourrait être un argument pour préférer le header accept-encoding: gzip plus classique pour gérer la compression à la volée.

thbar commented 1 year ago

Ca semble réglé, je vois qu'un header a été ajouté et ça fonctionne à présent sous Safari:

content-disposition: attachment; filename=estimated-timetable.zip