专栏首页MySQL入坑记https请求报错block:mixed-content问题的解决办法(已解决)

https请求报错block:mixed-content问题的解决办法(已解决)

问题截图

问题分析

今天,多个接口突然出现 block:mixed-content 错误,于是排查了一下发现:

错误:https页面去发送http请求报错(浏览器阻止https发送http请求)

原来是由于项目改成了https协议的缘故,出现了请求被拦截;

其实是浏览器不允许在https页面里嵌入http的请求,现在高版本的浏览器为了用户体验,都不会弹窗报错,只会在控制台上打印一条错误信息。

Mixed Content: The page was loaded over HTTPS,blocked the content must be served over HTTPS

如下图:

解决方法

方法1. 在主页面的head中加入下面代码(将调用的http请求升级成https请求并调用):

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

方法2. 走一下本地后端(将本地后端当成service中间层),从后端再去调用其他服务器的http请求

下面为后端中转接口

	/**
	 * 删除应用App
	 */
	@RequestMapping(value = "/delVersionConfig", produces = "text/html;charset=UTF-8")
	@ResponseBody
	public JSONObject delVersionConfig(Model model, HttpServletRequest request, String appId) {

		JSONObject resultJSON = new JSONObject();

		String JSONURL = "http://" + CommonData.DATA_URL + "/app/xxx/xxxx";
		Map<String, Object> condMap = new HashMap<String, Object>();
		condMap.put("id", appId);
                // 调用http封装类
		String result = HttpUtils.getHttpClient(JSONURL, condMap);
		LOGGER.info("selectAllApplication_info--result:" + result);
		resultJSON = JSON.parseObject(result);
		return resultJSON;

	}

HttpUtils封装类中HttpUtils.getHttpClient执行方法

	/**
     * 向指定URL发送GET方法的请求
     *
     * @param url   发送请求的URL 例如:http://localhost:8080/demo/login
     * @param param 请求参数 例:{ "userName":"admin", "password":"123456" }
     * @return URL 所代表远程资源的响应结果
     */
    public static String getHttpClient(String url, Map<String, Object> param) {
        StringBuilder result = new StringBuilder();
        BufferedReader in = null;
        try {
            URL realUrl = createURL(url, param);
            HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("Charset", "UTF-8");
            conn.connect();
            in = new BufferedReader(new InputStreamReader(
                    conn.getInputStream(),"UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
                result.append(line);
            }
        } catch (Exception e) {
            System.out.println("发送GET请求出现异常!" + e);
            e.printStackTrace();
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return result.toString();
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 磁盘打满解决方式及思路

    上午同事反应MySQL连不上了,我到服务器上用"df -h"查一下磁盘,发现磁盘打满了。解决顺便记录一下流程:

    陈哈哈
  • replaceAll()如何同时替换多个不同的字符串(或多个符号)

    正好我遇到过这个情况,就跟她分享了一下心得,解决问题后的她开心的像刚充完气儿一样。

    陈哈哈
  • Java垃圾回收的工作原理和最佳做法

    Java垃圾回收是Java程序执行自动内存管理的过程。Java程序编译为字节码,可以在Java虚拟机(简称JVM)上运行。当Java程序在JVM上运行时,将在堆...

    陈哈哈
  • Android自动化页面测速在美团的实践

    随着移动互联网的快速发展,移动应用越来越注重用户体验。美团技术团队在开发过程中也非常注重提升移动应用的整体质量,其中很重要的一项内容就是页面的加载速度。如果发生...

    美团技术团队
  • Http_load压力测试工具 原

        尝试过Spring的jmeter,不过好像有点难驾驭,测个文件url还行,但带个参数就各种问题不断了。

    尚浩宇
  • Android自动化页面测速在美团的实践

    随着移动互联网的快速发展,移动应用越来越注重用户体验。美团技术团队在开发过程中也非常注重提升移动应用的整体质量,其中很重要的一项内容就是页面的加载速度。如果发生...

    Android技术干货分享
  • SpringMVC添加异步请求支持

    注意web.xml应用需在所有的servlet和filter配置加上<async-supported>true</async-supported>

    Meet相识
  • 聊聊nacos的DistroFilter

    nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/web/CanDistro.java

    codecraft
  • 聊聊nacos的DistroFilter

    nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/web/CanDistro.java

    codecraft
  • Java 错别字检查接口 API

    Java 错别字检查接口 API 为了方便广大程序员朋友快速把错别字检查功能集成到自己的系统中,我们开发了一个支持HTTP协议的 Java 错别字检查接口 AP...

    田春峰-JCJC错别字检测

扫码关注云+社区

领取腾讯云代金券