mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-22 13:45:18 +00:00
feat(nuxt): useRequestHeader
utility (#24781)
This commit is contained in:
parent
fe2f0e01f2
commit
40a5f44942
34
docs/3.api/2.composables/use-request-header.md
Normal file
34
docs/3.api/2.composables/use-request-header.md
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
title: "useRequestHeader"
|
||||||
|
description: "Use useRequestHeader to access a certain incoming request header."
|
||||||
|
links:
|
||||||
|
- label: Source
|
||||||
|
icon: i-simple-icons-github
|
||||||
|
to: https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/composables/ssr.ts
|
||||||
|
size: xs
|
||||||
|
---
|
||||||
|
|
||||||
|
You can use the built-in [`useRequestHeader`](/docs/api/composables/use-request-header) composable to access any incoming request header within your pages, components, and plugins.
|
||||||
|
|
||||||
|
```ts
|
||||||
|
// Get the authorization request header
|
||||||
|
const authorization = useRequestHeader('authorization')
|
||||||
|
```
|
||||||
|
|
||||||
|
::callout
|
||||||
|
In the browser, `useRequestHeader` will return `undefined`.
|
||||||
|
::
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
We can use `useRequestHeader` to easily figure out if a user is authorized or not.
|
||||||
|
|
||||||
|
The example below reads the `authorization` request header to find out if a person can access a restricted resource.
|
||||||
|
|
||||||
|
```ts [middleware/authorized-only.ts]
|
||||||
|
export default defineNuxtRouteMiddleware((to, from) => {
|
||||||
|
if (!useRequestHeader('authorization')) {
|
||||||
|
return navigateTo('/not-authorized')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
```
|
@ -1,5 +1,5 @@
|
|||||||
import type { H3Event } from 'h3'
|
import type { H3Event } from 'h3'
|
||||||
import { setResponseStatus as _setResponseStatus, appendHeader, getRequestHeaders } from 'h3'
|
import { setResponseStatus as _setResponseStatus, appendHeader, getRequestHeader, getRequestHeaders } from 'h3'
|
||||||
import type { NuxtApp } from '../nuxt'
|
import type { NuxtApp } from '../nuxt'
|
||||||
import { useNuxtApp } from '../nuxt'
|
import { useNuxtApp } from '../nuxt'
|
||||||
|
|
||||||
@ -17,6 +17,12 @@ export function useRequestHeaders (include?: any[]) {
|
|||||||
return Object.fromEntries(include.map(key => key.toLowerCase()).filter(key => headers[key]).map(key => [key, headers[key]]))
|
return Object.fromEntries(include.map(key => key.toLowerCase()).filter(key => headers[key]).map(key => [key, headers[key]]))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function useRequestHeader(header: string) {
|
||||||
|
if (import.meta.client) { return undefined }
|
||||||
|
const event = useRequestEvent()
|
||||||
|
return event ? getRequestHeader(event, header) : undefined
|
||||||
|
}
|
||||||
|
|
||||||
export function useRequestFetch (): typeof global.$fetch {
|
export function useRequestFetch (): typeof global.$fetch {
|
||||||
if (import.meta.client) {
|
if (import.meta.client) {
|
||||||
return globalThis.$fetch
|
return globalThis.$fetch
|
||||||
|
@ -58,7 +58,7 @@ const granularAppPresets: InlinePreset[] = [
|
|||||||
from: '#app/composables/cookie'
|
from: '#app/composables/cookie'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
imports: ['prerenderRoutes', 'useRequestHeaders', 'useRequestEvent', 'useRequestFetch', 'setResponseStatus'],
|
imports: ['prerenderRoutes', 'useRequestHeader', 'useRequestHeaders', 'useRequestEvent', 'useRequestFetch', 'setResponseStatus'],
|
||||||
from: '#app/composables/ssr'
|
from: '#app/composables/ssr'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user