欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

​HTTPS请求报错BLOCK:MIXED-CONTENT问题的解决办法(已解决) 有大用

HTTPS请求报错BLOCK:MIXED-CONTENT问题的解决办法(已解决)

标签: Java  mixed-content  ajax报错

问题截图

 

问题分析

今天,多个接口突然出现 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请求

下面为后端中转接口

  1. /**
  2. * 删除应用App
  3. */
  4. @RequestMapping(value = "/delVersionConfig", produces = "text/html;charset=UTF-8")
  5. @ResponseBody
  6. public JSONObject delVersionConfig(Model model, HttpServletRequest request, String appId) {
  7. JSONObject resultJSON = new JSONObject();
  8. String JSONURL = "http://" + CommonData.DATA_URL + "/app/xxx/xxxx";
  9. Map<String, Object> condMap = new HashMap<String, Object>();
  10. condMap.put("id", appId);
  11. // 调用http封装类
  12. String result = HttpUtils.getHttpClient(JSONURL, condMap);
  13. LOGGER.info("selectAllApplication_info--result:" + result);
  14. resultJSON = JSON.parseObject(result);
  15. return resultJSON;
  16. }

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

  1. /**
  2.     * 向指定URL发送GET方法的请求
  3.     *
  4.     * @param url   发送请求的URL 例如:http://localhost:8080/demo/login
  5.     * @param param 请求参数 例:{ "userName":"admin", "password":"123456" }
  6.     * @return URL 所代表远程资源的响应结果
  7.     */
  8. public static String getHttpClient(String url, Map<String, Object> param) {
  9. StringBuilder result = new StringBuilder();
  10. BufferedReader in = null;
  11. try {
  12. URL realUrl = createURL(url, param);
  13. HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
  14. conn.setRequestProperty("accept", "*/*");
  15. conn.setRequestProperty("connection", "Keep-Alive");
  16. conn.setRequestProperty("Charset", "UTF-8");
  17. conn.connect();
  18. in = new BufferedReader(new InputStreamReader(
  19. conn.getInputStream(),"UTF-8"));
  20. String line;
  21. while ((line = in.readLine()) != null) {
  22. result.append(line);
  23. }
  24. } catch (Exception e) {
  25. System.out.println("发送GET请求出现异常!" + e);
  26. e.printStackTrace();
  27. } finally {
  28. try {
  29. if (in != null) {
  30. in.close();
  31. }
  32. } catch (Exception e2) {
  33. e2.printStackTrace();
  34. }
  35. }
  36. return result.toString();
  37. }

 

版权声明:本文为qq_39390545原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_39390545/article/details/105550949








来自  https://www.freesion.com/article/7545506969/


普通分类: