前端框架选型是企业提升开发效率与用户体验的关键因素
1202
2022-10-01
开发小程序遇到403错误怎么解决(小程序404错误)
程序员必备接口测试调试工具:立即使用Apipost = Postman + Swagger + Mock + Jmeter Api设计、调试、文档、自动化测试工具 后端、前端、测试,同时在线协作,内容实时同步
问题分析:
我们知道当前端程序向后台服务器发送请求时,如果服务器不允许跨域请求,就会发生403错误(错误信息为:“Invalid CORS request")。那么该怎么解决这个问题呢?
(学习视频分享:编程视频)
解决方法:
将信任的域配置到CORS允许的源地址列表中,如下代码所示:
@Beanpublic CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("http://localhost:3000"); config.addAllowedOrigin("http://127.0.0.1:3000"); config.addAllowedOrigin("http://127.0.0.1:55135"); config.addAllowedHeader(CorsConfiguration.ALL); config.addAllowedMethod(CorsConfiguration.ALL); source.registerCorsConfiguration("/**", config); CorsFilter bean = new CorsFilter(source); return bean;}-
对于微信小程序的开发,情况有点不一样,由于微信小程序只允许以域名方式的https连接,因此通过花生壳等内网穿透工具,搭建了一个外部可访问的公网域名,公网域名指向内部地址。
在调试时,就遇到了非法的跨域请求这个问题。其原因是在向后台服务器请求时,微信开发者工具在请求头中,带上了Origin字段,因此服务器判断是一个跨域请求。通过Fiddler等工具可以抓包看到如下信息:
POST https://xxx.xxx-/public/login HTTP/1.1Host: sharework.gicp-Connection: keep-aliveContent-Length: 50Pragma: no-cacheCache-Control: no-cacheOrigin: http://127.0.0.1:55135User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 wechatdevtools/1.02.1902010 MicroMessenger/6.7.3 Language/zh_CN webview/ token/e011a64b71b385130aa1f595fe48521ccontent-type: application/jsonAccept: */*Referer: https://servicewechat.com/wx955fc9354838fd46/devtools/page-frame.htmlAccept-Encoding: gzip, deflate, br{"account":"user","password":"defaultPassword123"}-
原因就在这里了。如果直接在手机上预览或调试则不会遇到这个问题。
把http://127.0.0.1:55135加入到允许CORS访问的域中,就可以愉快地开始调试了。
当然,55135这个端口经常会变化,我暂时也没有找到办法将它固定。目前可以通过下列方法快速找到这个端口(以windows为例):
1、tasklist | findstr "wechat",找到内存使用最大的那个进程号,比如12824
E:\apps\data-integration>tasklist | findstr "wechat"wechatdevtools.exe 13180 Console 2 98,572 Kwechatdevtools.exe 11092 Console 2 7,676 Kwechatdevtools.exe 15276 Console 2 132,520 Kwechatdevtools.exe 18380 Console 2 136,748 Kwechatdevtools.exe 8652 Console 2 26,100 Kwechatdevtools.exe 12824 Console 2 183,668 Kwechatdevtools.exe 16124 Console 2 89,524 Kwechatdevtools.exe 1164 Console 2 103,336 Kwechatdevtools.exe 12616 Console 2 77,056 Kwechatdevtools.exe 13136 Console 2 83,312 K-
2、netstat -ano | findstr "12824",找到状态为LISTENING,且端口唯一的那一行
E:\apps\data-integration>netstat -ano | findstr "12824" TCP 127.0.0.1:28475 0.0.0.0:0 LISTENING 12824 TCP 127.0.0.1:28475 127.0.0.1:61306 ESTABLISHED 12824 TCP 127.0.0.1:28475 127.0.0.1:61318 ESTABLISHED 12824 TCP 127.0.0.1:28475 127.0.0.1:61402 ESTABLISHED 12824 TCP 127.0.0.1:28475 127.0.0.1:61403 ESTABLISHED 12824 TCP 127.0.0.1:55135 0.0.0.0:0 LISTENING 12824-
3、55135就是我们要找的端口了。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~