Next.js页面上的动态权限策略

前端开发 2026-07-12

在Next.js中通过middleware.ts设置Permissions-Policy头。

我为页面A 返回一个权限策略X,然后通过Next Link导航到页面B,页面B 拥有权限策略Y。

我在对页面B 的内部Next JSON props请求中看到返回了权限策略Y。

页面B 仍在使用权限策略A。

如果我完全重新加载页面B,它会按预期发送权限策略Y,此时浏览器也会正确使用它。

如何在不同页面之间动态更改Next.js的权限策略?

我能找到的唯一解决方案是使用带整页加载的锚点标签,这样并不好。

解决方案

你的选项之一是在中间件中全局设置(如果可能的话)

// middleware.ts
response.headers.set('Permissions-Policy', 'camera=(), microphone=(), geolocation=()')

或者

当策略发生变化时,你可以强制进行整页重新加载,以替代:

<Link href="/page-b">Page B</Link>

使用:

<a href="/page-b">Page B</a>

或者

<Link href="/page-b" onClick={(e) => {
  e.preventDefault()
  window.location.href = '/page-b'
}}>Page B</Link>
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章