Mixed Content: The page at ‘https://XXX‘ was loaded over HTTPS, but requested ‘http://XXX‘

3 篇文章 0 订阅
本文介绍了在遇到线上环境http请求报错时的解决办法,包括前端通过在HTML头部添加安全策略升级请求为HTTPS,以及后端通过设置中转接口间接调用HTTP请求。这两种方法都是为了应对Content-Security-Policy限制,确保线上应用的安全运行。
摘要由CSDN通过智能技术生成

本地测试没问题,线上出现这个报错,问题不大

1.前端解决

将调用的http请求升级成https请求并调用,

html的头部加一行代码即可

<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();
    }

总结:立即看到效果的话个人推荐第一种用法!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值