【问题标题】:Java Spring - How to take in RequestParam, and remove from url?Java Spring - 如何接受 RequestParam,并从 url 中删除?
【发布时间】:2019-02-01 21:34:03
【问题描述】:

有时我想通过 url 将标识符传递给我的网站,但我不想将其显示给用户。有没有一种简单的方法来接收请求参数但在加载页面时不向用户显示?

这是我当前如何设置代码的大致思路

@GetMapping("/somePage")
public ModelAndView get(@RequestHeader HttpHeaders headers,
                        @RequestParam(value = "someId", required = false) String someId) {

我知道理论上我可以在 javascript 端执行此操作,但这似乎需要页面重新加载或与历史记录混淆。

【问题讨论】:

  • 要么将用户重定向到不带此参数的另一个 url(例如,您可以将参数值存储在请求属性中),要么使用 javascript history api 执行此操作。总的来说,这听起来是个坏主意。如果您的用户按 F5 怎么办 - 他们会得到另一个响应。
  • 您可以将“隐藏”值放在自定义标题中。

标签: java spring url http-request-parameters


【解决方案1】:

通常这是不好的做法 - 如果在 URL 中传递它,它将在用户的浏览器历史记录中可见。 POST 可能是这里的最佳实践。

但要回答您的实际问题:

将您的自定义值放入标头并重定向?

类似的东西(未经测试)

headers.set("X-Custom-Header1", someId);
headers.set("Location", "/newEndpoint");
return new ResponseEntity<>(headers, HttpStatus.FOUND);

【讨论】:

  • 这适用于我的用例。为什么这是不好的做法?只是好奇
  • @JR3652 在 URL 中传递的东西几乎总是能以最小的努力可见 - 即使这样的解决方法也不适合敏感数据。
猜你喜欢
  • 1970-01-01
  • 2017-11-25
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 2018-05-25
  • 1970-01-01
相关资源
最近更新 更多