发送https请求报IllegalArgumentException

这篇博客记录了在遇到前端通过HTTPS请求后台时遇到的IllegalArgumentException错误,解决方案包括在nginx中配置SSL证书,确保安全访问,并在后端的yml文件中配置SSL证书,同时通过配置类实现HTTP到HTTPS的重定向。文章详细介绍了每个步骤,包括端口设置和相关代码片段,适合遇到类似问题的开发者参考。

前端发送https请求后台会报IllegalArgumentException错误,首先需要先给服务器域名配置ssl证书,

在nginx.conf文件配置如下

server {
        listen       443 ssl;
        server_name  .com;  #ssl证书配置的域名
	    ssl_certificate		     .pem;  #证书路径 
	    ssl_certificate_key    .key;    #证书路径
		 
       
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
	    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
        ssl_prefer_server_ciphers on;	

        location / {
          root dist0;
          index index.html;
        }
       
    }

nginx配置好之后就能安全访问域名,单独访问http接口是没问题的,但是放到这个https域名之后会报This request has been blocked; the content must be served over HTTPS.

前端将接口改成https之后   后端再去yml里边配置ssl证书

server:
  port: 8099
  ssl:
    key-store: classpath: .pfx  #将文件放在resources下 跟yml同级便可
    key-store-password: 密码  #下载的文件里会带一个txt文本 复制就行
    key-store-type: PKCS12
  my:
    httpPort: 8088
    httpsPort: 8099

还需复制一个配置类,CV即可,无需改动

package cn.config;

import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 连接器配置 配置http向https的重定向,即使前端依然访问http,也会被定向到https
 */
@Configuration
public class HttpToHttpsConfig {

    @Value("${server.my.httpPort}")
    private int httpPort;

    @Value("${server.my.httpsPort}")
    private int httpsPort;

    /**
     * http重定向到https
     * @return
     */
    @Bean
    public TomcatServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }

    @Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //Connector监听的http的端口号
        connector.setPort(httpPort);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号
        connector.setRedirectPort(httpsPort);
        return connector;
    }
}

 看的别人的文章有的在yml 的httpsPost那里写443,因为我是放在nginx里的,这个端口被占用所以我是直接写的8080和8099,到这里不出意外就算是完美结束了.第一次遇见这种情况记录一下!!!

当 `spring-boot-maven-plugin` `IllegalArgumentException` 时,可尝试以下解决方案: #### 检查版本兼容性 确保 `spring-boot-maven-plugin` 的版本与项目中使用的 Spring Boot 版本兼容。不同版本的 Spring Boot 可能需要特定版本的插件。例如,若使用 Spring Boot 2.2.x 版本,可参考如下配置使用 `2.2.11.RELEASE` 版本的插件: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.2.11.RELEASE</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` #### 检查配置参数 `IllegalArgumentException` 可能是由于插件配置参数不正确导致的。仔细检查 `spring-boot-maven-plugin` 的配置,确保所有参数都正确设置。例如,检查 `repackage` 目标的配置是否正确。 #### 清理本地 Maven 仓库 有时候,本地 Maven 仓库中的缓存文件可能损坏,导致插件运行时出现异常。可以尝试删除本地 Maven 仓库中 `spring-boot-maven-plugin` 相关的文件,然后重新构建项目。本地 Maven 仓库默认路径为 `~/.m2/repository`。 #### 检查依赖冲突 使用 `mvn dependency:tree` 命令查看项目的依赖树,检查是否存在依赖冲突。冲突的依赖可能会导致插件在运行时出现异常。若发现冲突,可通过排除依赖或调整依赖版本来解决。 #### 更新 Maven 和 Java 版本 确保使用的 Maven 和 Java 版本符合 `spring-boot-maven-plugin` 的要求。`spring-boot-maven-plugin` 的 `1.5.4.RELEASE` 版本要求 Java 8 和 Maven 3.2 及以后版本[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值