Behavior at the edges
The following rules apply to alternate URL spellings, fragmented messages and generated assets.
The following rules apply to alternate URL spellings, fragmented messages and generated assets.
- Redirects. A target with a space at either end is refused, not trimmed, so
" //host"is never sent as//host. A form post that succeeds sends the browser back to itsRefererpath only when that path passes the same check. - Clerk route rules.
createRouteMatcheranswers for the path as written and as decoded, in lower case, because the Dusk router serves/DASHBOARDand/%64ashboardas/dashboard. Rules with several wildcards are matched in linear time. Try your rules against the paths your site serves in other spellings (upper case, percent-encoded). - Clerk webhooks.
verifyWebhookreads at most 1 MiB before it checks the signature (maxBodyByteschanges that), and refuses a larger body withreason: "body-too-large". - WebSockets. A frame that arrives in pieces is decoded in linear time, and ping frames count against
wsMaxMessagesPerSecond: a client that floods pings is closed with 1008. - Static files. A prerendered HTML page carries the same default
X-Frame-Options,Referrer-PolicyandPermissions-Policyas a handler answer. Set those headers in your own proxy if you turn the defaults off. - Image optimizer. A local
sourceis never called with a path that contains a dot segment, an encoded dot, slash or backslash, or a control character (400). A local source must declare animage/*type (415).
What the handler does not cover, so you decide it for your app: a client can pack many calls into one batch (limit sign-in and webhook
routes with a rate limiter that fits their traffic), connection caps are per process, Clerk's optional authorizedParties is off unless you set it, and the Convex deployment URL must be https.