当前位置: 首页 > news >正文

微信小程序配置访问服务器失败所发现的问题及解决方案

目录

  • 事前现象
    • 问题1:
      • 问题现象:
      • 问题分析:
    • 问题2:
      • 问题现象:
      • 问题分析:
      • 解决方案:
  • 事后现象

事前现象

问题1:

问题现象:

在本地调试时,一切顺利,但一旦部署到服务器上,访问出现了问题,问题现象如下:

  1. 在本地debug调试访问的时候一切正常,但是发布到服务器上之后,在进行访问就出现问题,提示后台接口连接不到;
    在这里插入图片描述
  2. 后端提示接口异常
    在这里插入图片描述

问题分析:

微信开发者 在尝试连接后台服务器时遇到问题,但通过Web浏览器访问 是正常的,通常意味着开发环境或微信开发工具本身遇到了一些特定的问题。
下有几个可能的原因和解决方法:

  1. 网络配置问题

    • 检查开发电脑的网络设置,确保没有被防火墙或代理阻止。
    • 确认开发工具中使用的服务器地址和端口是否正确。
  2. 微信开发者工具设置

    • 在微信开发者工具中检查是否有相关的网络设置选项,比如是否启用了调试模式或者使用了代理等。
    • 尝试清除缓存或重启微信开发者工具。
    • 见4. 跨域问题:request合法域名。
  3. HTTPS 证书问题

    • 如果服务器使用的是自签名证书或者非正规渠道颁发的证书,可能会导致连接失败。请确认服务器使用的是有效的 SSL/TLS 证书。
  4. 跨域问题

    • 微信小程序有严格的跨域策略,需要在微信公众平台的后台设置允许的域名列表。
    • 在服务器域名设置 request合法域名。
    • 检查微信公众平台的“开发”->“开发设置”中的合法域名设置是否包含了你的服务器域名。
  5. 代码错误

    • 查看开发者工具中的控制台输出,看看是否有任何错误信息提示。
    • 检查请求路径、参数、请求头等是否符合后端API的要求。
  6. 服务端问题

    • 联系服务器管理员,确认服务器端是否有对特定来源的访问限制。
    • 确认服务器端的日志,查看是否有相关错误记录。
  7. 微信官方问题

    • 有时候可能是微信服务器端出现了暂时性的问题,可以等待一段时间再次尝试,或者关注微信官方公告。

问题2:

问题现象:

  • 图示内容同上图一致,起初怀疑是问题未解决,后来发现是另外的问题;
  • 控制台打log提示内容返回值有问题,怀疑也是相关配置问题

问题分析:

客户端应用中使用域名 https://www.*.*:*/** 能够成功访问,但是使用 IP 地址 https://*.*.*.*:*/** 时遇到问题,这通常是由以下几个原因造成的:

  1. 域名解析

    • 当使用域名时,客户端首先通过 DNS 解析获取服务器的 IP 地址,然后与该 IP 地址建立连接。
    • 当使用 IP 地址时,客户端直接尝试与该 IP 地址建立连接。
  2. Nginx 或反向代理配置

    • 如果服务器使用 Nginx 或其他反向代理软件,通常配置为根据域名来识别不同的服务或应用程序。
    • Nginx 可能配置了基于域名的虚拟主机(server blocks),这意味着它需要通过域名来确定请求应该路由到哪个后端服务。
    • 如果使用 IP 地址,Nginx 可能无法正确识别请求,因为它缺少了必要的上下文信息(即域名)来确定请求的目的地。
  3. SSL/TLS 证书问题

    • 如果服务器使用了 SSL/TLS 证书来提供 HTTPS 加密连接,证书通常绑定到特定的域名,而不是 IP 地址。
    • 当使用 IP 地址时,客户端可能无法验证证书的合法性,从而导致连接失败或出现安全警告。
  4. 防火墙或安全组规则

    • 服务器的安全设置(如防火墙或安全组规则)可能仅允许通过域名访问,而不允许通过 IP 地址访问。
  5. 端口开放问题

    • 服务器的防火墙或安全组规则可能仅允许特定端口通过域名访问,而不是 IP 地址。

解决方案:

  1. 检查 Nginx 配置

    • 确认 Nginx 的配置文件中是否有关于域名 的 server block,并检查该 block 中是否有 listen 指令指定了端口。
    • 如果 Nginx 配置中没有针对 IP 地址的特定规则,那么可能需要在请求中使用域名以确保正确的路由。
  2. SSL/TLS 证书

    • 如果服务器使用 SSL/TLS 证书,确认证书是否绑定了正确的域名,并且客户端能够验证该证书。
  3. 防火墙或安全组规则

    • 检查服务器的防火墙或安全组设置,确保端口 对域名 是否正常 开放。
  4. 测试连接

    • 使用命令行工具如 curl 测试使用域名和 IP 地址时的连接情况,以确定问题所在:
      curl -I https://www.*.*:*/**
      curl -I https://*.*.*.*:*/**
      
  5. Nginx 日志

    • 查看 Nginx 的访问日志和错误日志,以获取更多关于请求处理的信息。
  6. 代码审查

    • 确认客户端代码中是否正确构造了请求,并且请求头中包含必要的信息,如 Host 标头。

事后现象

经过上述分析以及内容排查,最终可以正常访问
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 接入百度文心一言API教程
  • Godot入门 05收集物品
  • Windows 端口占用 Port 端口占用 如何发现端口占用并且强杀?
  • 【七】Hadoop3.3.4基于ubuntu24的分布式集群安装
  • 在生信分析中大家需要特别注意的事情​
  • C++ | Leetcode C++题解之第295题数据流的中位数
  • 开源模型应用落地-LangChain实用小技巧-MessagesPlaceholder使用(二)
  • 昇思MindSpore 应用学习-RNN实现情感分类-CSDN
  • Python 百题(实战快速掌握语法)_2(链表)
  • 全国区块链职业技能大赛样题第9套智能合约+数据库表设计
  • Linux网络-netstat命令
  • C++和R穿刺针吸活检肿瘤算法模型模拟和进化动力学量化差异模型
  • 面对AI伦理挑战:共筑稳固安全的未来发展之路
  • vue项目启动报错 vue与vue-template-compiler版本不一致
  • 玄机 第一章 应急响应-linux日志分析
  • Cookie 在前端中的实践
  • CSS 专业技巧
  • DataBase in Android
  • Idea+maven+scala构建包并在spark on yarn 运行
  • MySQL QA
  • PermissionScope Swift4 兼容问题
  • Python_网络编程
  • React-flux杂记
  • Spring Boot快速入门(一):Hello Spring Boot
  • spring-boot List转Page
  • 阿里云前端周刊 - 第 26 期
  • 闭包,sync使用细节
  • 从伪并行的 Python 多线程说起
  • 第2章 网络文档
  • 分享几个不错的工具
  • 关于Flux,Vuex,Redux的思考
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 人脸识别最新开发经验demo
  • 学习笔记:对象,原型和继承(1)
  • MPAndroidChart 教程:Y轴 YAxis
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • # SpringBoot 如何让指定的Bean先加载
  • #include到底该写在哪
  • #Z0458. 树的中心2
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (2)(2.10) LTM telemetry
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (Qt) 默认QtWidget应用包含什么?
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (一)Linux+Windows下安装ffmpeg
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • .cn根服务器被攻击之后
  • .FileZilla的使用和主动模式被动模式介绍
  • .jks文件(JAVA KeyStore)
  • .Net 4.0并行库实用性演练
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET 命令行参数包含应用程序路径吗?
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .Net6使用WebSocket与前端进行通信