La route
phil/qr-code-bundleAvec route.enabled et config/routes.php importé, les codes sont servis en images :
<img src="{{ qr_code_url('https://example.com/tickets/42') }}" alt="Ticket 42">
<img src="{{ qr_code_url({type: 'phone', number: '+15551234567'}, 'png', 'brand', true) }}" alt="Call us">
qr_code_url(content, format = 'svg', logo = '', absolute = false) écrit /qr-code.svg ou /qr-code.png avec la
charge utile et le logo dans la requête, signés avec le secret de l'application (_qr_signature). La route ne dessine
que ce que l'application a signé : toute autre adresse, ou un code qui ne peut pas être dessiné, est introuvable — la
route ne peut pas servir à dessiner des codes pour quelqu'un d'autre.
Chaque code est dessiné avec les valeurs par défaut de la configuration, et sa réponse :
- est
public,immutableet gardéecache_max_agesecondes par les navigateurs et les caches partagés, puisqu'une adresse donne toujours la même image ; - a un
ETagde son format, de son logo et de sa charge utile, et y répond par304 Not Modified; - est envoyée avec
X-Content-Type-Options: nosniffet, pour le SVG,Content-Security-Policy: default-src 'none'; img-src data:; style-src 'unsafe-inline'.
La charge utile est dans l'adresse : gardez les secrets hors des codes servis ainsi — un mot de passe Wi-Fi a sa
place dans un qr_code() en ligne, pas dans une URL que les journaux et les caches conservent.