mirror of
https://github.com/vercel/next.js.git
synced 2026-09-20 02:25:18 +08:00
71ce95dffa
> [!NOTE] > Best reviewed by each commit for better diff view. This PR clones the Middleware docs for Proxy and removes the Middleware docs. Did not clone the list of docs: - `errors/middleware-upgrade.mdx` - It's a middleware upgrade guide from v12.2 - `errors/beta-middleware.mdx` - It's an error when using middleware before v12.2 - `errors/returning-response-body.mdx` - Legacy behavior from versions < v12.2
35 lines
963 B
Plaintext
35 lines
963 B
Plaintext
---
|
|
title: Removed req.ua from Proxy API
|
|
---
|
|
|
|
## Why This Error Occurred
|
|
|
|
Your proxy is interacting with `req.ua` and this feature needs to opt-in.
|
|
|
|
```ts filename="proxy.ts"
|
|
import { NextRequest, NextResponse } from 'next/server'
|
|
|
|
export function proxy(request: NextRequest) {
|
|
const url = request.nextUrl
|
|
const viewport = request.ua.device.type === 'mobile' ? 'mobile' : 'desktop'
|
|
url.searchParams.set('viewport', viewport)
|
|
return NextResponse.rewrite(url)
|
|
}
|
|
```
|
|
|
|
## Possible Ways to Fix It
|
|
|
|
To parse the user agent, import `userAgent` function from `next/server` and give it your request:
|
|
|
|
```ts filename="proxy.ts"
|
|
import { NextRequest, NextResponse, userAgent } from 'next/server'
|
|
|
|
export function proxy(request: NextRequest) {
|
|
const url = request.nextUrl
|
|
const { device } = userAgent(request)
|
|
const viewport = device.type === 'mobile' ? 'mobile' : 'desktop'
|
|
url.searchParams.set('viewport', viewport)
|
|
return NextResponse.rewrite(url)
|
|
}
|
|
```
|