smiley-http-proxy-servlet 转发https至 http网页访问
转发 https -> http 网页访问
正常的smiley-http-proxy-servlet 写法,
可以转发https接口到http,http接口到http,http访问转发至http网页,
但是没有办法转发https到http的访问,会提示当前网页已更改地址之类的,总之就是网页无响应,
1. 源码直接copy到项目里,调整源码
结果代码copy进来了,但是并没有被代理,搜索了一大圈,没结果就不搜了
2. 扩大了搜索范围
在网上搜索了很久都没有找到相关 https 网页访问转发至http网页访问的,所以就扩大了搜索范围
搜索了一篇,可以动态代理目标地址的博文,关系不大,我这边也就只有一个网址,随便试试,简单调一下,居然ok了?!
原博文:https://www.cnblogs.com/changxy-codest/p/13093132.html
调整后更新如下:
import org.apache.http.client.utils.URIUtils;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URI; public class ProxyServlet extends org.mitre.dsmiley.httpproxy.ProxyServlet { private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(ProxyServlet.class);
@Override
protected void service(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws ServletException, IOException {
servletRequest.setAttribute(ATTR_TARGET_URI, null);
URI uri = null;
try {
uri = new URI(targetUri);
} catch (java.net.URISyntaxException e) {
logger.error("创建URI对象出错, targetUri[{}]", targetUri, e);
}
servletRequest.setAttribute(ATTR_TARGET_HOST, null);
super.targetHost = URIUtils.extractHost(uri);
super.service(servletRequest, servletResponse); } }
下面都是默认的一般配置:
//import org.mitre.dsmiley.httpproxy.ProxyServlet;
import xxxx.xxx.xx.ProxyServlet;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class ProxyServletConfiguration { @Value("${proxy.forward.servlet_url_one}")
private String proxyUrl; @Value("${proxy.forward.target_url_one}")
private String targetUrl; @Bean
public org.springframework.boot.web.servlet.ServletRegistrationBean servletRegistrationBean(){
org.springframework.boot.web.servlet.ServletRegistrationBean servletRegistrationBean = new org.springframework.boot.web.servlet.ServletRegistrationBean(new ProxyServlet(), proxyUrl);
//这个setName必须要设置,并且多个的时候,名字需要不一样
servletRegistrationBean.setName("forward1");
servletRegistrationBean.addInitParameter("targetUri", targetUrl);
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "true");
return servletRegistrationBean;
} // @Bean
// public org.springframework.boot.web.servlet.FilterRegistrationBean registration(org.springframework.web.filter.HiddenHttpMethodFilter filter) {
// FilterRegistrationBean registration = new FilterRegistrationBean(filter);
// registration.setEnabled(false);
// return registration;
// }
}
<!--ProxyFilter的引入依赖-->
<dependency>
<groupId>org.mitre.dsmiley.httpproxy</groupId>
<artifactId>smiley-http-proxy-servlet</artifactId>
<version>1.12.1</version>
</dependency>
# 端口号及ssl配置
server:
port: 10000
ssl:
key-store: classpath:xxx
key-store-password: xxx
key-password: xxx
key-store-type: xxx
enabled: true
key-alias: xxxx
proxy:
forward:
servlet_url_one: /*
target_url_one: http://tarhetUrlIP:port/
smiley-http-proxy-servlet 转发https至 http网页访问的更多相关文章
- Set Java Proxy for Http/Https
Command Line JVM Settings The proxy settings are given to the JVM via command line arguments: java ...
- nodejs 实现 http proxy 透明转发
这两天需要安装一个Linux虚拟机,接下来要通过 yum 来安装需要的软件. 因单位的网络需要通过代理才能访问外网,公司代理服务器:proxy.xxxx.com,给yum增加了proxy设置: # v ...
- Servlet转发到JSP页面的路径问题
一.现象与概念 1. 问题 在Servlet转发到JSP页面时,此时浏览器地址栏上显示的是Servlet的路径,而若JSP页面的超链接还是相对于该JSP页面的地址且该Servlet和该JSP页面不在同 ...
- servlet转发与重定向区别
servlet转发与重定向 HttpServletRequest: 表示浏览器向服务器发送的请求报文,由Tomcat创建然后作为参数传递给我们doget,dopost方法. 功能:getParam ...
- 关于配置websocket,nginx转发https至wss问题
在本地测试通过的socket,再放到现在的有nginx代理之后发现会报:failed: Error in connection establishment: net::ERR_NAME_NOT_RES ...
- java web中servlet、jsp、html 互相访问的路径问题
java web中servlet.jsp.html 互相访问的路径问题 在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. java web中的路径使用按我的分法可 ...
- 如何让springboot打包的项目部署在阿里云上使用https和http方式访问
前言 问题描述:怎么让springboot部署在服务器上使用https协议方式访问我们的接口或者域名,目的是某些平台请求的是https协议,而不是https 部署环境:阿里云 centos7服务器,s ...
- Java Servlet(十一):一个servlet被10个浏览器客户端访问时会创建几个servlet实例?
一般Servlet只初始化一次(只有一个实例).对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给该方法.如此重复以 ...
- HTTPS的内网访问和访问外网
https://launchpad.support.sap.com/#/notes/2461900 https://wiki.scn.sap.com/wiki/display/Security/Tro ...
- Fiddler: 如何抓取HTTPS协议的网页
作者:韦玮 转载请注明出处 Fiddler默认只能抓取HTTP协议的网页,不能抓取HTTPS协议的网页,而我们很多时候,都需要抓HTTPS协议的网页,比如抓淘宝数据等.今天,韦玮老师会为大家讲解如何 ...
随机推荐
- Coding:小写一个debugfs
Coding:小写一个debugfs 上一次整活还是在上一个月,写了一个简单的module并且熟悉了module的挂载查看和卸载.这一次我们自然玩一个大的,就是利用linux的debugfs AP ...
- 跟我一起学习和开发动态表单系统-前端用vue、elementui实现方法(3)
基于 Vue.Element UI 和 Spring Boot + MyBatis 的动态表单系统前端实现解析 在现代企业信息系统中,动态表单是一种非常常见的功能.它可以根据业务需求灵活地调整表单结构 ...
- 委托之Action与Func
1 例程代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- 经典面试题函数柯里化: add(1)(2)(3) = 6
function currying() { const args = Array.prototype.slice.call(arguments); const inner = function () ...
- 在缩小浏览器宽度的时候,图片会超出li的宽度
要确保在缩小浏览器宽度时,图片不会超出 <li> 元素的宽度,您可以为描述文本添加一些样式,以便让图片适应于 <li> 元素.一种常见的方法是使用 CSS 中的 max-wid ...
- el-config-provider
el-config-provider是Element Plus库中的一个组件,用于提供全局的配置.它是Element Plus在2.0版本中引入的新组件. el-config-provider组件的作 ...
- Volatile不保证原子性及解决方案
原子性的意义 原子性特别是在并发编程领域,是一个极其重要的概念,原子性指的是一个操作或一组操作要么全部执行成功,要么全部不执行,不会出现部分执行的情况.这意味着原子性操作是不可分割的,它们在执行过程中 ...
- vscode 常用设置
vscode 常用设置 by:授客 QQ:1033553122 版本 vscode Version: 1.33.1 1. 自动保存文件设置 文件编辑一秒钟过后自动保存 2. 黏贴后 ...
- php 模型浏览器
docker安装 文档:https://github.com/SeleniumHQ/docker-selenium docker run -d -p 4444:4444 -p 7900:7900 -- ...
- 【DataBase】局域网访问Windows系统下的MySQL8
Windows服务主机已经安装好MySQL8并且配置了用户密码 MySQL8更改用户密码: ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' ...