Url AS A STRING 从后端发送到前端,自动从 http 更改为 https,有人知道为啥吗?
Posted
技术标签:
【中文标题】Url AS A STRING 从后端发送到前端,自动从 http 更改为 https,有人知道为啥吗?【英文标题】:Url AS A STRING sent from backend to frontend, been changed automatically from http to https, anyone know why?Url AS A STRING 从后端发送到前端,自动从 http 更改为 https,有人知道为什么吗? 【发布时间】:2017-09-20 18:49:23 【问题描述】:谁能帮我解决这个问题,我不知道为什么。
Web 应用程序使用 HTTPS 协议,SpringMVC 作为 mvc 框架,Spring Security 用于安全性。
在控制器中,我将一个字符串设置为 modelMap,SpringMVC 将使用它来呈现前端页面。 喜欢:
model.addAttribute("actionUrl", http://localhost:8080/web/dothings);
此属性将被设置为 FORM 的 ACTION
<form id="test" method="post" action="$actionUrl">
但是,当我检查 JSP 页面的源代码时,操作已更改为
https://localhost:8080/web/dothings
喜欢:
<form id="test" action="https://localhost:8080/web/dothings">
它是由库或 servlet 容器改变的吗?
【问题讨论】:
【参考方案1】:我在本地进行了测试,但没有发现您的问题。我认为这与您的配置有关。
您可以将这种方法与 url 一起使用,而不是检查配置:
现在你正在使用这个网址:
http://localhost:8080/web/dothings
把这个改成这个试试看:
//localhost:8080/web/dothings
这是一个协议相关的 url。
在 URL 的开头使用//
,将方案部分留给浏览器。浏览器根据页面 url 自己的方案在 http
和 https
之间进行选择。
【讨论】:
【参考方案2】:你可以只发送不带完整上下文路径的 URL。从你的控制器只发送 url 路径
model.addAttribute("actionUrl", "/dothings");
在你的jsp页面中
<form id="test" action="$pageContext.request.contextPath$actionUrl">
让我知道这是否有效。
【讨论】:
contextPath
仅打印您的网络上下文。不是你的协议。为您的 Web 应用程序打印 /web
。让应用程序决定哪个是您的协议和 dn。
这也是一种标准方式,不要将直接 ip 或 localhost
放在您的 web-apps 控制器中。 @Asikar以上是关于Url AS A STRING 从后端发送到前端,自动从 http 更改为 https,有人知道为啥吗?的主要内容,如果未能解决你的问题,请参考以下文章
AWS - 使用 @connections websocket 回调 url 从后端发送响应(单向) - API Gateway websocket 协议