【问题标题】:How to hide api response from user?如何隐藏用户的 api 响应?
【发布时间】:2018-06-17 18:22:58
【问题描述】:

我使用 react 作为前端,express/next.js 作为后端/api。他们通过 GET/POST 请求和 JSON 数据响应“交流”。每次站点在服务器端呈现时,chrome 调试器中都没有 api 数据。但是当用户通过页面路由客户端时 - 它调用 api 客户端,您可以看到来自 api (mongoDB) 的所有数据。我一直想知道是否可以对用户隐藏 JSON 数据。我有一个餐厅网站,它以 JSON 数据获取许多餐厅的数据,所以就像将 mongodb 的数据发布给客户端一样。

在使用 react 或其他框架的流行网站上,我在 chrome 调试器中看不到 api 数据。

我有一个网站,用户可以在其中设置一些过滤器,然后转到显示过滤餐厅的结果网站。那么如何始终发送 api 调用服务器端呢?

【问题讨论】:

  • 没有。你无法隐藏它。您的客户端通过 Ajax 调用从服务器请求的任何内容都可供任何人(具有少量技术知识)查看。如果您不希望看到该 JSON 数据,则必须以不同的方式设计您的应用程序,而不是像这样从您的服务器请求它。也许你会做服务器端渲染,所以只有 HTML 到达客户端。
  • 您无法隐藏请求,但如果您真的愿意,可以加密数据。不过,我不明白这一点,如果服务器正在向用户发送一些数据,那么该用户应该能够观察到该数据。如果不是,为什么服务器会发送它?
  • 不要发送您不希望客户拥有完全且不受限制的访问权限的客户数据。

标签: javascript reactjs express backend next.js


【解决方案1】:

您作为响应发送到客户端的任何内容都可以由客户端(客户)在 chrome 调试器选项卡中或通过以编程方式直接查询该 API 来检索。

做到这一点的唯一好方法是限制 API 泄​​露受限制的数据。如果您只想让数据远离调试器选项卡,则可以执行整页加载而不是 ajax。

【讨论】:

  • 好的,那我怎么给得到结果的页面提供参数呢?唯一的方法是查询参数,例如:page.com/?parameter1=xyz&parameter2=abc,对吧?
  • 你是指查询参数还是POST参数?
  • 我的意思是页面的信息,说明它必须从 api 调用什么,比如过滤器设置和类似的东西
  • 您可以将这些设置作为查询参数传递给页面。所有这些参数都需要在“?”之后添加。在网址中。
  • @panskehanske 提出一个新问题。不要在这里继续回答新问题。
猜你喜欢
  • 1970-01-01
  • 2018-12-27
  • 2023-02-06
  • 1970-01-01
  • 1970-01-01
  • 2020-09-28
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多