Ne jamais avancer en amont des en-têtes d'identité fournis par le client
forward(), forwardWebhook() et forwardCallback() copié chaque entrant en-tête à l'exception de l'hôte (et, pour les deux sans session, les en-têtes des titres d...
Sapps de SMS à l'avant, qui n'a rien atteint du tout
Traefik envoie tous les chemins sur api.kamocrm.com vers cette passerelle sans chemin divisé, et cette classe a été transmise /api/voip/- et rien d'autre. Donc ...
Sapps de SMS à l'avant, qui n'a rien atteint du tout
Traefik envoie tous les chemins sur api.kamocrm.com vers cette passerelle sans chemin divisé, et cette classe a été transmise /api/voip/- et rien d'autre. Donc ...
Prouver le déploiement par digest, et non par étiquette
L'engagement précédent s'arrête « image de mise en place» étant un no-op silencieux. Cela affirme la résultat: après le déploiement, l'étiquette est résolue à u...
Une reconstruction du même engagement n'a rien déployé et a fait état d'un succès
L'image est étiquetée avec le commit SHA, donc la reconstruction du même commit produit une référence d'image identique. L'image de set kubectl change alors rie...
Laisser les /api/réglages vers l'avant, ce qui n'a pointé vers rien
EmailService sert le contrôleur d'intégration de synchronisation à l'adresse suivante: - pas /api/réglages/intégrations de sorte que vers l'avant, le service ne...
Route /api/contacts, /api/calendrier et /api/réglages vers EmailService
Contacts et écrans de calendrier de KamoMobile 404'd à chaque demande. Ni l'un ni l'autre chemin a été acheminé à l'hôte api, donc rien n'a atteint EmailService...
Donner la salle de déploiement des 15 minReadySeconds maintenant coût
Les seconds étaient de 60 ans. C'est la fenêtre qu'un déploiement doit montrer des progrès avant Kubernetes abandonne et marque qu'il a échoué, et l'engagement ...
APIService ne s'est jamais fermé gracieusement
Les déploiements ont remplacé la seule gousse de chaque service par rien pour saisir les demandes en vol. Trois réglages, appliqués sur l'ensemble de la flotte:...
Encoder le jeton décodé exactement une fois sur le chemin en amont
21670e5 SocialWebhookController via l'entrée de UpstreamUri FULLY-PRE-ENCODED point, mais son URL est un hybride: "token" est un "PathVariable", donc les mains ...
Transférer les octets de requête de l'appelant sur les mandataires faisant face au public
La passerelle a arrêté les chaînes de requête à double codage dans 3c24d32, mais quatre d'autres proxys de ce service encore concaténés déjà en pourcentage d'oc...
Transférer les octets de requête de l'appelant au lieu de les coder deux fois
Chaque URL cette passerelle construite est assemblée à partir de getRequestURI() et getQueryString() - les deux déjà encodés - et a ensuite été remis à Reste de...
Harden the kubectl téléchargement contre la sortie floconneuse [skip ci
dl.k8s.io sur la sortie du coureur chute par intermittence au moyen de transferts: curl: (56) OpenSSL SSL-read: déchiffrement raté ou mauvais enregistrement m...
Report de l'initié obligatoire à la phase 1 et à l'original d'origine et à l'exclusion d'origine (liste d'autorisations vides / origine manquante autorisée)
Les widgets de phase-0 sont toujours allumés via leur proxy côté serveur, de sorte que le verrouillage d'origine n'a pas L'intérêt et chaque clé de chariot publ...
Seules les clés réellement valides en cache, et non dessaisies d'origine (prévente des documents valides)
Sur un cache redis froid, une clé publique valide avec une origine erronée/absente était mis en cacheté INVALIDE pour les années 60, niant les demandes de l'ori...
Bind WS relaye poignée de main à Origin et ajouter la clé de cache froide
Extraction d'Extracts PublicChatCtrotateur de la validation privéeViaDownstream() en un partage PublicChatKeyResolver haricot donc PublicChatWebSocketHandler pe...
Appliquer le champ d'application du projet PUBLIC-CHAT sur les voies HTTP et WS du public
Carve /api/voip/enregistres/enregistres/z hors du gicleur VOIP
Le /api/voip/- catch-all dans APIGatewayLe contrôleur ombrait le Départ dédié VoipRecordingUploadPurveur POST/api/voip/recordages/upload mappage lorsque les map...
Limite de taille de téléchargement de fichier à 500 Mo
Spring Boot plafonne par défaut des parties multiparties à 1 Mo, provoquant une image de fond téléchargements à échec avec 500 dans request.getParts(). Match Se...
Déplacer le CORS vers Traefik via les kamo-middlewares, enlever le filtre CorsFilter
L'application CorsFilter «Bean in the Spring» n'appliquait pas silencieusement les en-têtes après WebConfig.java a été supprimé. Le CORS est désormais entièreme...
Supprimer les têtes de CORS en amont en double CorsFilter et bander en amont
WebConfig.java a défini un deuxième grain CorsFilter en concurrence avec CorsConfig.java haricot, risquer d'écrire un en-tête dupliqué. Il l'a supprimé de sorte...
Fixer l'application/le prêt pour les organes JSON transmis à SecurityService
Le modèle de repos vers l'amont pourrait laisser la type de contenu incompatible avec Spring «Demande de demande, responsable de 415. Après lecture du corps bru...
Valider la signature Forgejo HMAC-SHA256 au lieu d'un en-tête secret clair
Forgejo envoie webhook secret sous le nom de X-Gitea-Signature / X-Forgejo-Signature HMAC-SHA256 hachage, pas comme une valeur d'en-tête simple. Lire le corps, ...
Inclure SUBSCRIPTION-CATALOG dans les lunettes de réduction par défaut
Lorsque MediaService ne retourne pas de champ d'application dans la réponse de validation, par défaut d'inclusion des lunes PUBLIC-CHAT et SUBSCRIPTION-CATALOG....
Correct meet.service.url jusqu'au port de https 8443 (MediaService utilise SSL)
Utiliser getServerName() au lieu de getHeader(Host) pour la résolution d'hôte d'origine
ForwardedHeaderFilter consomme X-Forwarded-Host et s'adapte getServerName() en conséquence, tandis que getHeader(Host) retourne l'hôte HTTP brut qui peut être u...
Utiliser HTTP sur le port 80 pour rencontrer l'URL du service pour correspondre à d'autres services
Le critère HTTPS sur 8443 provoque une inadéquation de cert SSL lors du routage par l'intermédiaire du DNS interne K8. Tous les autres services utilisent HTTP a...
Utiliser l'URL MediaService correcte (https port 8443) pour meet.service.url
Ajouter meet.service.url à K8s configmap pour empêcher le crash d'APIService
Préserver l'emestre en amont X-Forwarded-Host au lieu d'écraser avec son propre hôte
Lorsqu'un mandataire en amont (Next.js) définit X-Forwarded-Host à la navigation hôte d'origine, APIService le préserve maintenant au lieu de l'écraser avec son...
Explicitement en avant les IP des visiteurs vers les services en aval
ForwardedHeaderFilter consomme X-Forwarded-For à partir de la requête entrante, donc lorsque APIService transmet à SecurityService via RestTemplate the header e...
Déplacer AccessEnforcementFilter pour balayer le boîtier, retour ComponentScan
Le «ComponentScan élargi» a provoqué un conflit entre les haricots. CorsConfig et WebConfig. A déplacé le filtre dans com.kamo.api.app.config (déjà balayé par S...
Ajouter Configuration de connexion Redis à K8s configmap
La nd d'APIService ne démarrait pas parce que spring-boot-starter-data-redis L'auto-configuration ne pouvait pas se connecter à Redis chez localhost:6379. Point...
Utiliser JdkClientHttpRequestFactory pour soutenir la transmission de la méthode PATCH
Le RestTemplate par défaut utilise SimpleClientHttpRequestFactory (HttpURLConnection) qui ne supporte pas la méthode PATCH HTTP, provoquant l'échec des titres d...
Ajouter la configuration de Buildx avec la configuration de registre non sécurisée pour résoudre les erreurs 401 auth
Ajouter la cartographie de l'itinéraire pour /api/notes/- pour le transmettre à SecurityService
Poignées bloquées à durée déterminée plus rapidement et ajouter une configuration d'arrêt gracieuse
Ajouter des crochets, des sondes et augmenter le délai de grâce de terminaison pour empêcher les temporisations de déploiement
Promise de données multipart/form-formes en reconstruisant les pièces pour RestTemplate
Remplacer les adresses IP par des noms d'hôtes et permettre les déploiements k2m1
Comme ce que tu vois expédier ?
Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.