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 自己的方案在 httphttps 之间进行选择。

【讨论】:

【参考方案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,有人知道为啥吗?的主要内容,如果未能解决你的问题,请参考以下文章

将值从后端 nodejs 传递到前端反应原生

AWS - 使用 @connections websocket 回调 url 从后端发送响应(单向) - API Gateway websocket 协议

vue 从后端拿到验证码并点击刷新

根据请求jQuery将pdf从后端传输到前端

跨站点 cookie 的问题:如何将 cookie 从后端设置到前端

从后端开发转职前端开发,我学到了什么?