Tentative d'ajout d'un lien dans une dépêche, avec comme URL https://riot.im/app/#/room/#
INFO -- : Started POST "/redaction/links" for xx.xx.xx.xx at 2017-07-20 23:44:14 +0200
INFO -- : Processing by Redaction::LinksController#create as HTML
INFO -- : Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "news_id"=>"36926", "link"=>{"title"=>"Coin", "url"=>"https://riot.im/app/#/room/#", "lang"=>"fr"}}
INFO -- : Completed 500 Internal Server Error in 10ms (ActiveRecord: 1.5ms)
FATAL -- :
URI::InvalidURIError (bad URI(is not URI?): https://riot.im/app/#/room/#):
app/models/link.rb:33:in `url='
app/controllers/redaction/links_controller.rb:12:in `create'
# Validité de l'URL ?
Posté par Bruno Michel (site web personnel) . Évalué à 3 (+0/-0).
Effectivement, Ruby ne veut pas parser cette URL :
De ce que je comprends de la rfc 3986 sur les URI, l'URL en question est effectivement invalide. Le deuxième
#
devrait être pourcent encodé.[^] # Re: Validité de l'URL ?
Posté par Benoît Sibaud (site web personnel) . Évalué à 3 (+0/-0). Dernière modification le 21 juillet 2017 à 09:19.
La question semble revenir régulièrement. La grammaire ABNF de la RFC 3986 dit qu'il faut %-coder, et l'annexe B sur les regexp dit que non. Les navigateurs acceptent les deux, et les serveurs n'ont qu'à se débrouiller pour se décider…
https://lists.w3.org/Archives/Public/public-rdf-in-xhtml-tf/2008Nov/0043.html
https://stackoverflow.com/questions/4968470/using-multiple-fragment-identifiers-in-a-url
https://stackoverflow.com/questions/10850781/multiple-hash-signs-in-url
Du coup, soit on ne fait rien, soit on renvoie un code plus sympa que 500 et/ou une erreur plus explicite pour l'utilisateur, soit on %-code à la place de l'utilisateur, soit on sacrifie un poulet.
# Corrigé
Posté par Benoît Sibaud (site web personnel) . Évalué à 4 (+0/-0).
Correction indirecte via
https://linuxfr.org/suivi/corruption-de-depeches-et-url-avec-des-caracteres-non-ascii
et
https://linuxfr.org/suivi/echec-de-validation-de-lien
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.