溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

開發(fā)小程序遇到403錯誤的解決方法

發(fā)布時間:2020-12-22 09:36:53 來源:億速云 閱讀:954 作者:小新 欄目:移動開發(fā)

小編給大家分享一下開發(fā)小程序遇到403錯誤的解決方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

問題分析:

我們知道當(dāng)前端程序向后臺服務(wù)器發(fā)送請求時,如果服務(wù)器不允許跨域請求,就會發(fā)生403錯誤(錯誤信息為:“Invalid CORS request")。那么該怎么解決這個問題呢?

解決方法:

將信任的域配置到CORS允許的源地址列表中,如下代碼所示:

@Bean
public 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;
}

對于微信小程序的開發(fā),情況有點不一樣,由于微信小程序只允許以域名方式的https連接,因此通過花生殼等內(nèi)網(wǎng)穿透工具,搭建了一個外部可訪問的公網(wǎng)域名,公網(wǎng)域名指向內(nèi)部地址。

在調(diào)試時,就遇到了非法的跨域請求這個問題。其原因是在向后臺服務(wù)器請求時,微信開發(fā)者工具在請求頭中,帶上了Origin字段,因此服務(wù)器判斷是一個跨域請求。通過Fiddler等工具可以抓包看到如下信息:

POST https://xxx.xxx.net/public/login HTTP/1.1Host: sharework.gicp.netConnection: 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"}

原因就在這里了。如果直接在手機上預(yù)覽或調(diào)試則不會遇到這個問題。

把http://127.0.0.1:55135加入到允許CORS訪問的域中,就可以愉快地開始調(diào)試了。

當(dāng)然,55135這個端口經(jīng)常會變化,我暫時也沒有找到辦法將它固定。目前可以通過下列方法快速找到這個端口(以windows為例):

1、tasklist | findstr "wechat",找到內(nèi)存使用最大的那個進程號,比如12824

E:\apps\data-integration>tasklist | findstr "wechat"
wechatdevtools.exe           13180 Console                    2     98,572 K
wechatdevtools.exe           11092 Console                    2      7,676 K
wechatdevtools.exe           15276 Console                    2    132,520 K
wechatdevtools.exe           18380 Console                    2    136,748 K
wechatdevtools.exe            8652 Console                    2     26,100 K
wechatdevtools.exe           12824 Console                    2    183,668 K
wechatdevtools.exe           16124 Console                    2     89,524 K
wechatdevtools.exe            1164 Console                    2    103,336 K
wechatdevtools.exe           12616 Console                    2     77,056 K
wechatdevtools.exe           13136 Console                    2     83,312 K

2、netstat -ano | findstr "12824",找到狀態(tài)為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就是我們要找的端口了。

以上是“開發(fā)小程序遇到403錯誤的解決方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI