Javascript 如何在Next.js中保护API路由?

Javascript 如何在Next.js中保护API路由?,javascript,node.js,next.js,Javascript,Node.js,Next.js,我正在使用Next.js API路由,但我不知道如何保护它们不受公众的攻击 现在,这些路由在我的生产服务器中是公共的 例如:当我在浏览器中转到mysite.com/api/cats时,它会返回- {success:true,data:[…]} 请帮助,我如何对公众隐藏这些API路由?使用getSession()# 可以使用getSession()方法保护API路由 使用getToken()# 如果您使用的是JSON Web令牌,那么就可以使用getToken()助手访问JWT的内容,而无需自己

我正在使用Next.js API路由,但我不知道如何保护它们不受公众的攻击

现在,这些路由在我的生产服务器中是公共的

例如:当我在浏览器中转到
mysite.com/api/cats
时,它会返回-

{success:true,data:[…]}
请帮助,我如何对公众隐藏这些API路由?

使用getSession()# 可以使用getSession()方法保护API路由

使用getToken()# 如果您使用的是JSON Web令牌,那么就可以使用getToken()助手访问JWT的内容,而无需自己处理JWT解密/验证。此方法只能在服务器端使用


请参见此处:。

如果阻止浏览器请求URL,则用户在地址栏中键入URL时将看不到数据,您的JavaScript在向同一URL发出Ajax请求时将看不到数据


您不能对浏览器用户隐藏数据,同时仍允许在同一浏览器中运行的应用程序访问数据。

定义“公共”。您是否试图阻止使用您的应用程序的用户访问API?那么应用程序应该如何访问API?我的应用程序只有一个页面(索引),
/
,并且不使用身份验证。例如,当您在浏览器中转到mysite.com/api/cats时,您将看到原始json数据。我只是想防止这种情况发生。可能吗?谢谢。我想我只需要使用相同的旧API键。如果通过ajax或任何后端调用API时设置了一个只有开发人员知道的值,那么必要的“key=”param如何?就像谷歌为其API所做的一样。。如果手动键入(因为它需要key参数),这不会隐藏到用户的路由,但允许在正常时间调用后端api吗?@m4tt-如果您在发出请求时需要在URL中传递一个键,并且请求必须来自浏览器,那么您必须将该键提供给用户可以访问它的浏览器。如果您希望请求来自服务器而不是浏览器,那么您看到的问题是错误的。