• SpringBoot 1.X版本设置Https访问以及跨域https访问的问题


    最近在做的一个项目中出现了Https域向非Https域发送ajax请求无法通过的问题

    Mixed Content: The page at was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://127.0.0.1/test'. This request has been blocked; the content must be served over HTTPS.

    而我的项目又正好是springboot项目,所以就去网上查看了一下如何解决这个问题。得到的结果是被访问的这个网址也必须是https的,所以需要我们获得被访问的https证书,由于我的测试地址是本地服务,所以我采用的是本地keytools自己生成证书,如果你的项目是公网的,那么你可能需要去证书颁发机构获取证书。

    那么接下老就正式开始配置了。

    HTTPS在项目中的使用

    首先我们要先获取到自己生成的证书文件,可以是.jks或者.keystore或者p12文件,那么我们将文件放到哪里呢?我们将文件放到项目的根目录下就行了
    接着就是配置了

    HTTPS的配置

    SpringBoot中可以在application.properties文件中进行配置,也可以在代码中进行配置,这里我们选择在代码中进行配置,节省一些不必要的配置

    首先我们在启动类中实现EmbeddedServletContainerCustomizer接口,这个接口允许我们对springboot中内置的tomcat进行自定义的配置,当然这个接口在SpringBoot2.0中有了变化,有兴趣的朋友可以关注一下。
    实现了EmbeddedServletContainerCustomizer接口之后,需要去实现一个customize方法,在该方法中可以进行一些配置
    以下是我的配置

        @Override
        public void customize(ConfigurableEmbeddedServletContainer container) {
            Ssl ssl = new Ssl();
            //Server.keystore中包含服务器私钥和证书
            ssl.setKeyStore("server.keystore");
            ssl.setKeyStorePassword("zhuofansoft");
            container.setPort(8432);
            container.setSsl(ssl);
            container.setContextPath("/keybord");
        }
    

    自此关于Https的配置就告一段落了。

    如果你要打包成jar包的话

    当你打包成jar包然后使用java -jar启动之后,可能会提示缺少server.keystore文件,那么这个时候你需要将刚刚放到项目根目录下的server.keystore文件放一份到与jar包同一目录下。这样就可以正常启动了

    如果本地https仍然无法跨域访问请看这里

    本地https仍然无法正常访问的原因,可能是我们自己的证书不受信任的原因,那么我们需要在自己的本地浏览器中添加对本地127.0.0.1的httpsy域名证书的信任,具体如何添加请自行搜索。

  • 相关阅读:
    如何提交docker镜像到DockerHub
    【leetcode】200. Number of Islands
    【Java NIO】一文了解NIO
    【Java】同步阻塞式(BIO)TCP通信
    【剑指offer】9、斐波拉契数列
    SolidWorks242个使用技巧
    BR(BoomerangRobot)机器人项目
    Android学习笔记基于回调的事件处理
    Android学习笔记基于监听的事件处理
    Android学习笔记Log类输出日志信息
  • 原文地址:https://www.cnblogs.com/zhendiao/p/9649867.html
Copyright © 2020-2023  润新知