[{"data":1,"prerenderedAt":800},["ShallowReactive",2],{"navigation":3,"-utils-security":189,"-utils-security-surround":795},[4,91,138,166,173],{"title":5,"path":6,"stem":7,"children":8,"icon":90},"Guide","/guide","1.guide/0.index",[9,12,53,69],{"title":10,"path":6,"stem":7,"icon":11},"Getting Started","pixel:play",{"title":5,"icon":13,"path":14,"stem":15,"children":16,"page":52},"ph:book-open-duotone","/guide/basics","1.guide/1.basics",[17,22,27,32,37,42,47],{"title":18,"path":19,"stem":20,"icon":21},"Request Lifecycle","/guide/basics/lifecycle","1.guide/1.basics/1.lifecycle","icon-park-outline:handle-round",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/guide/basics/routing","1.guide/1.basics/2.routing","solar:routing-bold",{"title":28,"path":29,"stem":30,"icon":31},"Middleware","/guide/basics/middleware","1.guide/1.basics/3.middleware","mdi:middleware-outline",{"title":33,"path":34,"stem":35,"icon":36},"Event Handlers","/guide/basics/handler","1.guide/1.basics/4.handler","mdi:function",{"title":38,"path":39,"stem":40,"icon":41},"Sending Response","/guide/basics/response","1.guide/1.basics/5.response","tabler:json",{"title":43,"path":44,"stem":45,"icon":46},"Error Handling","/guide/basics/error","1.guide/1.basics/6.error","tabler:error-404",{"title":48,"path":49,"stem":50,"icon":51},"Nested Apps","/guide/basics/nested-apps","1.guide/1.basics/7.nested-apps","material-symbols-light:layers-outline",false,{"title":54,"icon":55,"path":56,"stem":57,"children":58,"page":52},"API","material-symbols-light:api-rounded","/guide/api","1.guide/900.api",[59,64],{"title":60,"path":61,"stem":62,"icon":63},"H3","/guide/api/h3","1.guide/900.api/1.h3","material-symbols:bolt-rounded",{"title":65,"path":66,"stem":67,"icon":68},"H3Event","/guide/api/h3event","1.guide/900.api/2.h3event","material-symbols:data-object-rounded",{"title":70,"icon":71,"path":72,"stem":73,"children":74,"page":52},"Advanced","hugeicons:more-01","/guide/advanced","1.guide/901.advanced",[75,80,85],{"title":76,"path":77,"stem":78,"icon":79},"Plugins","/guide/advanced/plugins","1.guide/901.advanced/1.plugins","clarity:plugin-line",{"title":81,"path":82,"stem":83,"icon":84},"WebSockets","/guide/advanced/websocket","1.guide/901.advanced/2.websocket","hugeicons:live-streaming-02",{"title":86,"path":87,"stem":88,"icon":89},"Nightly Builds","/guide/advanced/nightly","1.guide/901.advanced/9.nightly","game-icons:barn-owl","i-ph:book-open-duotone",{"title":92,"path":93,"stem":94,"children":95,"icon":97},"Utils","/utils","2.utils/0.index",[96,98,103,108,113,118,123,128,133],{"title":92,"path":93,"stem":94,"icon":97},"ph:function-bold",{"title":99,"path":100,"stem":101,"icon":102},"Request","/utils/request","2.utils/1.request","material-symbols-light:input",{"title":104,"path":105,"stem":106,"icon":107},"Response","/utils/response","2.utils/2.response","material-symbols-light:output",{"title":109,"path":110,"stem":111,"icon":112},"Cookie","/utils/cookie","2.utils/3.cookie","material-symbols:cookie-outline",{"title":114,"path":115,"stem":116,"icon":117},"Security","/utils/security","2.utils/4.security","wpf:key-security",{"title":119,"path":120,"stem":121,"icon":122},"Proxy","/utils/proxy","2.utils/5.proxy","arcticons:super-proxy",{"title":124,"path":125,"stem":126,"icon":127},"MCP","/utils/mcp","2.utils/6.mcp","material-symbols:swap-calls",{"title":129,"path":130,"stem":131,"icon":132},"More utils","/utils/more","2.utils/9.more","mingcute:plus-line",{"title":134,"path":135,"stem":136,"icon":137},"Community","/utils/community","2.utils/99.community","lets-icons:external",{"title":139,"path":140,"stem":141,"children":142,"icon":144},"Examples","/examples","4.examples/0.index",[143,145,150,154,158,162],{"title":139,"path":140,"stem":141,"icon":144},"ph:code",{"title":146,"path":147,"stem":148,"icon":149},"Cookies","/examples/handle-cookie","4.examples/handle-cookie","ph:arrow-right",{"title":151,"path":152,"stem":153,"icon":149},"Sessions","/examples/handle-session","4.examples/handle-session",{"title":155,"path":156,"stem":157,"icon":149},"Static Assets","/examples/serve-static-assets","4.examples/serve-static-assets",{"title":159,"path":160,"stem":161,"icon":149},"Stream Response","/examples/stream-response","4.examples/stream-response",{"title":163,"path":164,"stem":165,"icon":149},"Validate Data","/examples/validate-data","4.examples/validate-data",{"title":167,"path":168,"stem":169,"children":170,"icon":172},"Migration","/migration","5.migration/0.index",[171],{"title":167,"path":168,"stem":169,"icon":172},"icons8:up-round",{"title":174,"path":175,"stem":176,"children":177},"Blog","/blog","99.blog",[178,181,185],{"title":174,"path":175,"stem":179,"icon":180},"99.blog/index","i-lucide-file-text",{"title":182,"path":183,"stem":184,"icon":180},"H3 1.8 - Towards the Edge of the Web","/blog/v1.8","99.blog/1.v1.8",{"title":186,"path":187,"stem":188,"icon":180},"H3 v2 beta","/blog/v2-beta","99.blog/2.v2-beta",{"id":190,"title":114,"body":191,"description":788,"extension":789,"meta":790,"navigation":792,"path":115,"seo":793,"stem":116,"__hash__":794},"content/2.utils/4.security.md",{"type":192,"value":193,"toc":764,"icon":117},"minimark",[194,199,207,211,217,345,351,354,358,451,455,461,464,470,473,479,482,488,491,497,500,506,509,513,519,522,526,532,535,541,544,550,553,556,563,567,742,748,751,757,760],[195,196,198],"h2",{"id":197},"authentication","Authentication",[200,201,203],"h3",{"id":202},"basicauthopts",[204,205,206],"code",{},"basicAuth(opts)",[208,209,210],"p",{},"Create a basic authentication middleware.",[208,212,213],{},[214,215,216],"strong",{},"Example:",[218,219,224],"pre",{"className":220,"code":221,"language":222,"meta":223,"style":223},"language-ts shiki shiki-themes github-light github-dark github-dark","import { H3, serve, basicAuth } from \"h3\";\nconst auth = basicAuth({ password: \"test\" });\napp.get(\"/\", (event) => `Hello ${event.context.basicAuth?.username}!`, [auth]);\nserve(app, { port: 3000 });\n","ts","",[204,225,226,249,275,331],{"__ignoreMap":223},[227,228,231,235,239,242,246],"span",{"class":229,"line":230},"line",1,[227,232,234],{"class":233},"so5gQ","import",[227,236,238],{"class":237},"slsVL"," { H3, serve, basicAuth } ",[227,240,241],{"class":233},"from",[227,243,245],{"class":244},"sfrk1"," \"h3\"",[227,247,248],{"class":237},";\n",[227,250,252,255,259,262,266,269,272],{"class":229,"line":251},2,[227,253,254],{"class":233},"const",[227,256,258],{"class":257},"suiK_"," auth",[227,260,261],{"class":233}," =",[227,263,265],{"class":264},"shcOC"," basicAuth",[227,267,268],{"class":237},"({ password: ",[227,270,271],{"class":244},"\"test\"",[227,273,274],{"class":237}," });\n",[227,276,278,281,284,287,290,293,297,300,303,306,308,311,314,316,319,322,325,328],{"class":229,"line":277},3,[227,279,280],{"class":237},"app.",[227,282,283],{"class":264},"get",[227,285,286],{"class":237},"(",[227,288,289],{"class":244},"\"/\"",[227,291,292],{"class":237},", (",[227,294,296],{"class":295},"sQHwn","event",[227,298,299],{"class":237},") ",[227,301,302],{"class":233},"=>",[227,304,305],{"class":244}," `Hello ${",[227,307,296],{"class":237},[227,309,310],{"class":244},".",[227,312,313],{"class":237},"context",[227,315,310],{"class":244},[227,317,318],{"class":237},"basicAuth",[227,320,321],{"class":244},"?.",[227,323,324],{"class":237},"username",[227,326,327],{"class":244},"}!`",[227,329,330],{"class":237},", [auth]);\n",[227,332,334,337,340,343],{"class":229,"line":333},4,[227,335,336],{"class":264},"serve",[227,338,339],{"class":237},"(app, { port: ",[227,341,342],{"class":257},"3000",[227,344,274],{"class":237},[200,346,348],{"id":347},"requirebasicauthevent-opts",[204,349,350],{},"requireBasicAuth(event, opts)",[208,352,353],{},"Apply basic authentication for current request.",[208,355,356],{},[214,357,216],{},[218,359,361],{"className":220,"code":360,"language":222,"meta":223,"style":223},"import { defineHandler, requireBasicAuth } from \"h3\";\nexport default defineHandler(async (event) => {\n  await requireBasicAuth(event, { password: \"test\" });\n  return `Hello, ${event.context.basicAuth.username}!`;\n});\n",[204,362,363,376,404,419,445],{"__ignoreMap":223},[227,364,365,367,370,372,374],{"class":229,"line":230},[227,366,234],{"class":233},[227,368,369],{"class":237}," { defineHandler, requireBasicAuth } ",[227,371,241],{"class":233},[227,373,245],{"class":244},[227,375,248],{"class":237},[227,377,378,381,384,387,389,392,395,397,399,401],{"class":229,"line":251},[227,379,380],{"class":233},"export",[227,382,383],{"class":233}," default",[227,385,386],{"class":264}," defineHandler",[227,388,286],{"class":237},[227,390,391],{"class":233},"async",[227,393,394],{"class":237}," (",[227,396,296],{"class":295},[227,398,299],{"class":237},[227,400,302],{"class":233},[227,402,403],{"class":237}," {\n",[227,405,406,409,412,415,417],{"class":229,"line":277},[227,407,408],{"class":233},"  await",[227,410,411],{"class":264}," requireBasicAuth",[227,413,414],{"class":237},"(event, { password: ",[227,416,271],{"class":244},[227,418,274],{"class":237},[227,420,421,424,427,429,431,433,435,437,439,441,443],{"class":229,"line":333},[227,422,423],{"class":233},"  return",[227,425,426],{"class":244}," `Hello, ${",[227,428,296],{"class":237},[227,430,310],{"class":244},[227,432,313],{"class":237},[227,434,310],{"class":244},[227,436,318],{"class":237},[227,438,310],{"class":244},[227,440,324],{"class":237},[227,442,327],{"class":244},[227,444,248],{"class":237},[227,446,448],{"class":229,"line":447},5,[227,449,450],{"class":237},"});\n",[195,452,454],{"id":453},"session","Session",[200,456,458],{"id":457},"clearsessionevent-config",[204,459,460],{},"clearSession(event, config)",[208,462,463],{},"Clear the session data for the current request.",[200,465,467],{"id":466},"getsessionevent-config",[204,468,469],{},"getSession(event, config)",[208,471,472],{},"Get the session for the current request.",[200,474,476],{"id":475},"sealsessionevent-config",[204,477,478],{},"sealSession(event, config)",[208,480,481],{},"Encrypt and sign the session data for the current request.",[200,483,485],{"id":484},"unsealsession_event-config-sealed",[204,486,487],{},"unsealSession(_event, config, sealed)",[208,489,490],{},"Decrypt and verify the session data for the current request.",[200,492,494],{"id":493},"updatesessionevent-config-update",[204,495,496],{},"updateSession(event, config, update?)",[208,498,499],{},"Update the session data for the current request.",[200,501,503],{"id":502},"usesessionevent-config",[204,504,505],{},"useSession(event, config)",[208,507,508],{},"Create a session manager for the current request.",[195,510,512],{"id":511},"fingerprint","Fingerprint",[200,514,516],{"id":515},"getrequestfingerprintevent-opts",[204,517,518],{},"getRequestFingerprint(event, opts)",[208,520,521],{},"Get a unique fingerprint for the incoming request.",[195,523,525],{"id":524},"cors","CORS",[200,527,529],{"id":528},"appendcorsheadersevent-options",[204,530,531],{},"appendCorsHeaders(event, options)",[208,533,534],{},"Append CORS headers to the response.",[200,536,538],{"id":537},"appendcorspreflightheadersevent-options",[204,539,540],{},"appendCorsPreflightHeaders(event, options)",[208,542,543],{},"Append CORS preflight headers to the response.",[200,545,547],{"id":546},"handlecorsevent-options",[204,548,549],{},"handleCors(event, options)",[208,551,552],{},"Handle CORS for the incoming request.",[208,554,555],{},"If the incoming request is a CORS preflight request, it will append the CORS preflight headers and send a 204 response.",[208,557,558,559,562],{},"If return value is not ",[204,560,561],{},"false",", the request is handled and no further action is needed.",[208,564,565],{},[214,566,216],{},[218,568,570],{"className":220,"code":569,"language":222,"meta":223,"style":223},"const app = new H3();\nconst router = createRouter();\nrouter.use(\"/\", async (event) => {\n  const corsRes = handleCors(event, {\n    origin: \"*\",\n    preflight: {\n      statusCode: 204,\n    },\n    methods: \"*\",\n  });\n  if (corsRes !== false) {\n    return corsRes;\n  }\n  // Your code here\n});\n",[204,571,572,590,604,631,647,658,664,675,681,691,697,715,724,730,737],{"__ignoreMap":223},[227,573,574,576,579,581,584,587],{"class":229,"line":230},[227,575,254],{"class":233},[227,577,578],{"class":257}," app",[227,580,261],{"class":233},[227,582,583],{"class":233}," new",[227,585,586],{"class":264}," H3",[227,588,589],{"class":237},"();\n",[227,591,592,594,597,599,602],{"class":229,"line":251},[227,593,254],{"class":233},[227,595,596],{"class":257}," router",[227,598,261],{"class":233},[227,600,601],{"class":264}," createRouter",[227,603,589],{"class":237},[227,605,606,609,612,614,616,619,621,623,625,627,629],{"class":229,"line":277},[227,607,608],{"class":237},"router.",[227,610,611],{"class":264},"use",[227,613,286],{"class":237},[227,615,289],{"class":244},[227,617,618],{"class":237},", ",[227,620,391],{"class":233},[227,622,394],{"class":237},[227,624,296],{"class":295},[227,626,299],{"class":237},[227,628,302],{"class":233},[227,630,403],{"class":237},[227,632,633,636,639,641,644],{"class":229,"line":333},[227,634,635],{"class":233},"  const",[227,637,638],{"class":257}," corsRes",[227,640,261],{"class":233},[227,642,643],{"class":264}," handleCors",[227,645,646],{"class":237},"(event, {\n",[227,648,649,652,655],{"class":229,"line":447},[227,650,651],{"class":237},"    origin: ",[227,653,654],{"class":244},"\"*\"",[227,656,657],{"class":237},",\n",[227,659,661],{"class":229,"line":660},6,[227,662,663],{"class":237},"    preflight: {\n",[227,665,667,670,673],{"class":229,"line":666},7,[227,668,669],{"class":237},"      statusCode: ",[227,671,672],{"class":257},"204",[227,674,657],{"class":237},[227,676,678],{"class":229,"line":677},8,[227,679,680],{"class":237},"    },\n",[227,682,684,687,689],{"class":229,"line":683},9,[227,685,686],{"class":237},"    methods: ",[227,688,654],{"class":244},[227,690,657],{"class":237},[227,692,694],{"class":229,"line":693},10,[227,695,696],{"class":237},"  });\n",[227,698,700,703,706,709,712],{"class":229,"line":699},11,[227,701,702],{"class":233},"  if",[227,704,705],{"class":237}," (corsRes ",[227,707,708],{"class":233},"!==",[227,710,711],{"class":257}," false",[227,713,714],{"class":237},") {\n",[227,716,718,721],{"class":229,"line":717},12,[227,719,720],{"class":233},"    return",[227,722,723],{"class":237}," corsRes;\n",[227,725,727],{"class":229,"line":726},13,[227,728,729],{"class":237},"  }\n",[227,731,733],{"class":229,"line":732},14,[227,734,736],{"class":735},"sCsY4","  // Your code here\n",[227,738,740],{"class":229,"line":739},15,[227,741,450],{"class":237},[200,743,745],{"id":744},"iscorsoriginallowedorigin-options",[204,746,747],{},"isCorsOriginAllowed(origin, options)",[208,749,750],{},"Check if the origin is allowed.",[200,752,754],{"id":753},"ispreflightrequestevent",[204,755,756],{},"isPreflightRequest(event)",[208,758,759],{},"Check if the incoming request is a CORS preflight request.",[761,762,763],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":223,"searchDepth":251,"depth":251,"links":765},[766,770,778,781],{"id":197,"depth":251,"text":198,"children":767},[768,769],{"id":202,"depth":277,"text":206},{"id":347,"depth":277,"text":350},{"id":453,"depth":251,"text":454,"children":771},[772,773,774,775,776,777],{"id":457,"depth":277,"text":460},{"id":466,"depth":277,"text":469},{"id":475,"depth":277,"text":478},{"id":484,"depth":277,"text":487},{"id":493,"depth":277,"text":496},{"id":502,"depth":277,"text":505},{"id":511,"depth":251,"text":512,"children":779},[780],{"id":515,"depth":277,"text":518},{"id":524,"depth":251,"text":525,"children":782},[783,784,785,786,787],{"id":528,"depth":277,"text":531},{"id":537,"depth":277,"text":540},{"id":546,"depth":277,"text":549},{"id":744,"depth":277,"text":747},{"id":753,"depth":277,"text":756},"H3 security utilities.","md",{"automd":791,"icon":117},true,{"icon":117},{"title":114,"description":788},"GlHLyDkGfGmf07agApu-2T9V-y4ncIDydlIdUY0_Jko",[796,798],{"title":109,"path":110,"stem":111,"description":797,"icon":112,"children":-1},"H3 cookie utilities.",{"title":119,"path":120,"stem":121,"description":799,"icon":122,"children":-1},"H3 proxy utilities.",1773004782761]