如果在微信小程序中使用wx://localhost会在真机调试中出现错误,就算不校验合法域名也不行。
有点繁琐,本地调试也要开启SSL才行
这里使用的是Spring Gateway配置SSL
① 生成SSL证书
keytool -genkeypair -alias tomcat -keyalg RSA -keystore E:\keystore.jks
根据提示填写,之后挪到gateway的resouce中
②配置如下
nacos的服务发现和gateway的信任下游全部证书都开启
server:
ssl:
key-store: classpath:keystore.jks
key-store-password: xxxxxx
key-password: xxxxxx
enabled: true
key-store-type: JKS
spring:
cloud:
nacos:
discovery:
server-addr: nacos地址
secure: true
gateway:
httpclient:
ssl:
useInsecureTrustManager: true
如果gateway指定证书的话
spring:
cloud:
gateway:
httpclient:
ssl:
trustedX509Certificates:
- cert1.pem
- cert2.pem
详见TLS and SSL :: Spring Cloud Gateway
③配置路由
routes:
- id: user_route
uri: lb://sys-user-server
predicates:
- Path=/sys/**
filters:
- StripPrefix=1
- id: websocket_route
uri: lb:ws://sys-user-server
predicates:
- Path=/ws/**
filters:
- StripPrefix=1
必须带lb,需要websocket的就写这个lb:ws://
因为在ReactiveLoadBalancerClientFilter类中有这样一段代码
if (url == null || (!"lb".equals(url.getScheme()) && !"lb".equals(schemePrefix))) {
return chain.filter(exchange);
}
// 上面直接返回执行不到下面
...
String overrideScheme = retrievedInstance.isSecure() ? "https" : "http";
④重启全部后端服务
本地中,WSS成功连接上了,但是真机模拟又出大病了
{“errno”:600001,“errMsg”:“request:fail errcode:-200 cronet_error_code:-200 error_msg:net::ERR_CERT_COMMON_NAME_INVALID”}
错误的证书地址?难道真的只能放服务器上跑吗?
留个疑问