Java 在 HttpServletRequest 中获得 TRUE 起源

Posted

技术标签:

【中文标题】Java 在 HttpServletRequest 中获得 TRUE 起源【英文标题】:Java get TRUE origin in HttpServletRequest 【发布时间】:2017-03-17 04:41:51 【问题描述】:

我正在构建启用了 CORS 的 rest API。由于必须从已知域访问 API,我必须检查请求的来源是否在“白名单”域中。

但我必须 100% 确定,请求的来源确实是来源,而不是某些修改后的标头。

我找到了这个链接: https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name

关于禁止的标头名称,所以我问的是这个信息是否可以,没有人可以更改标头来源?

我正在像这样访问 Java 中的请求:

(HttpServletRequest) request.getHeader("origin")

这是我的做法吗?

【问题讨论】:

【参考方案1】:

Spring 具有出色的开箱即用支持来处理可通过 xml 或 java 配置使用的跨源请求。

此外,配置可以是全局的(通过CorsRegistry)或特定于控制器的(@CrossOrigin)以进行精细控制

查看here 和here,其中包含有关如何开始以及如何工作的详细信息。

【讨论】:

以上是关于Java 在 HttpServletRequest 中获得 TRUE 起源的主要内容,如果未能解决你的问题,请参考以下文章

为啥 HttpServletRequest.getRemoteAddr() 在 Java servlet 中不起作用? [复制]

Java HttpServletRequest中getAttribute()方法和getParameter()区别

Java 在 HttpServletRequest 中获得 TRUE 起源

java.lang.NoSuchMethodError:javax.servlet.http.HttpServletRequest.isAsyncStarted

Tomcat 8 Java 8 的 HttpServletRequest.getRemoteAddr() 为空

java HttpServletRequest和HttpServletResponse詳解