1. 前端ajax請求常見的狀態碼以及產生的原因
注:以下狀態碼大部分都是自己項目中遇到的,現記錄方便日後查看。
通常前後端使用ajax交互時,客戶端向伺服器發送請求時,然後伺服器向我們返回狀態碼。 狀態碼就是告訴我們伺服器響應的狀態 ,由3位數字組成,其中第一位數字表示響應類別,響應類別從1到5分為五種 。
表示請求被伺服器正常處理 ,最常見的就是這個
表示請求已成功處理,但是沒有內容返回
也就是返回的響應報文中沒有報文實體
一般用在只是客戶端向伺服器發送信息,而伺服器不用向客戶端返回什麼信息的情況
永久重定向,表示請求的資源已經永久的搬到了其他位置 ,資源已經被分配了新的URI
臨時重定向,表示請求的資源臨時搬到了其他位置 ,請求的資源暫時被配到到了新的URI,和301很像,只不過資源是臨時移動
表示請求資源存在另一個URI,應使用GET定向獲取請求資源
303功能與302一樣,區別只是303明確客戶端應該使用GET訪問
表示客戶端自從上次請求後,請求的網頁未修改過。伺服器返回此響應時,不會返回網頁內容。
304通常在IE瀏覽器下多次請求同一個地址出現的。
場景:刪除表格其中一條數據後重新請求列表數據渲染表格,第二次請求時狀態碼是304導致被刪除的數據還是出現在前端。
原因:IE瀏覽器下同一地址的ajax請求優先讀取本地緩存數據
解決方法:在請求地址後面加上時間戳,保證每次請求的地址都不一樣,這樣瀏覽器就無法讀取緩存。
表示請求報文存在語法錯誤或參數錯誤,伺服器不理解 ,需要修改請求內容後再次發送
表示發送的請求需要有HTTP認證信息或者是認證失敗了
返回401的響應必須包含一個適用於被請求資源的WWW-Authenticate首部以質詢用戶信息
表示對請求資源的訪問被伺服器拒絕了,通常是 沒有許可權或者跨域 。
表示伺服器找不到請求的資源
表示請示方式不對,注意檢查method,比如後端定義post請求方式而我們用了get,delete,put,path等方式均報錯。
表示伺服器執行請求的時候出錯了。(後端的問題)
表示伺服器超負載或正停機維護,無法處理請求
以上,如有錯誤歡迎指正,如果喜歡還請點個贊再走,謝謝!更多項目實戰源碼請移步我的 碼雲地址
2. 前端打包之後的代碼放到伺服器上請求路徑不對
這個應該是設置了代理 或者是配置錯了 可以看看配置文件 或者封裝ajax的地方是不是設置了默認根路徑
3. 2021-09-13 一文解析前端請求307導致CORS跨域失敗
公司的系統偶爾會出現跨域錯誤,同事們的解決方法一般是清空瀏覽器緩存即可解決。大家一直都覺得很奇怪,但因為是偶發事件都不太關注。最近,經過一些資料搜索和努力排查,終於明白了是怎麼基銷回事
根據現象可以發現:
返回頭:
先說結論:
-- 原因是瀏覽器在發送搏知游http請求時自動進行307內部跳轉,導致了跨域預檢失敗。
-- 為什麼會307內部跳轉呢? 是因為瀏覽器採用HSTS(HTTP Strcit-Transport-Securit)策略,將所有非http的請求內部跳轉成https。
-- 為什麼瀏覽器認為這個域名需要採用HSTS策略呢?因為服務端/nginx返回的http請求header里配置了Strict-Transport-Security(嚴格傳輸安全)選項。
現代瀏覽器和伺服器都開始支持 HSTS(HTTP Strict Transport Security) 功能,即自動將不安全的 HTTP 請求使用 307 Internal Redirect 跳轉到 HTTPS 請求。這是由Chrome內部HSTS緩存導致的。Chrome 會自動記住每個域的 HSTS 設置,也就是說HSTS只要在理論上的第一次暴露後,後來就不經網頁伺服器返回,瀏覽器會查詢本地數據,直接偽造 HSTS 307 跳轉到安全的 HTTPS,以此來加強網路訪問的安全性。
問題是,是誰告訴瀏覽器這么做的呢?
原因是在nginx配置中有這么一段:
瀏覽器接到這樣的回復頭:
這里意思是通知瀏覽器,訪問的這個域名需要採用HSTS策略,並且過期時間是31622400秒(一年),在這一年中都需要使用HSTS策略,意味著發起http請求時,瀏覽器都會強行進行307內部跳轉。
然後因為307跳轉被cors預檢請求認為是不合法的,故此預檢失敗:猛孝
將: add_header Strict-Transport-Security max-age=31622400
改為: add_header Strict-Transport-Security max-age=0;
4. thinkphp前端顯示網路異常
THINKPHP作為國內比較出色的PHP框架,近年發展還是比較迅速,目前最新版本已經到TP5.1,安全性能等都有不少提升,使用的程序員也越來越多,所以THINKPHP製作的網站也越來越多,今天,方維網路就來分析THINKPHP網站打不開的原因有哪些?當你的網站打不開時,方便你排查問題!
一、伺服器掛了。如果網站打不開的表現是網路連接錯誤,沒有輸出任何錯誤信息,那麼很可能就是伺服器網路出問題或者伺服器死機了。
二、資料庫掛了。一般會提示錯誤信息,如果沒有屏蔽錯誤,會直接顯示資料庫連接錯誤。
三、網站空間滿了。不管是nginx還是apache,或是THINKPHP本身,都會產生很多日誌文件,當硬碟不夠大的時候,THINKPHP無法生成緩存文件,導致網站打不開出錯。這種問題很簡單,就是從伺服器刪除佔用比較大的日誌文件或者對伺服器進行擴容。
四、apache、nginx或者是IIS掛了,這個可以進伺服器查看,可以重啟下。
五、網站文件被篡改,一般是網站密碼泄露或者網站已經被黑客攻破的情況。這種可以通過FTP軟體查看網站文件的修改日期來判斷。
六、程序本身有問題,如存在死循環等BUG,這個就需要程序員去調試分析,這種出現概率比較低,因為一般早期就可發現。
七、訪問量太大,伺服器無法應付,這種情況應該升級伺服器,或者 使用負載均衡分伺服器部署,當然也可以使用一些緩存來緩解。
八、伺服器網路和本地網路出現故障,如在國內訪問國外伺服器的網站,速度非常慢導致網站打不開。
九、伺服器放在國外,然後伺服器IP被國內屏蔽導致打不開,這種只能換伺服器了。
THINKPHP網站打不開的原因很多,但最常見的就是:硬碟已滿或者伺服器出故障。
深圳方維網路專注於網站定製,定製各類品牌官網、商城、平台、旅遊網站和小程序等,歡迎有需求客戶咨詢。
5. 前端在請求頭中添加token就報錯
你這個不是token的問題,而是跨域的問題,你這個請求跨域了,所以才報這個錯誤,如果要麼配置代理,要麼在後端對請求進行處理,允許跨域,要麼用mockjs先做本地測試。
6. 哪個HTTP狀態碼表示前端的請求參數傳錯了
建議
1 項目統一,後端統一輸出,前端統一判斷
2 從業務分層角度,可有兩種
2.1 使用http狀態作業務狀態信息交互,不絕握棚利於多種業務狀態的處理並則
2.2 區別於http狀態(不使用http狀態作業務狀態信息交互),便於日皮森後處理bug與邏輯糾紛,用其他欄位,如errorCode - tx
3 具體值自行設計, 如:40000 4000 400 600 6100
7. 前端代理部署問題
作為前端最常出現的兩個場景。
一,打寬芹蠢包在本地部署
二,打包給伺服器部署
不管哪種都屬要配置代理才能解決跨域問題
VUE
1.根目錄下的vue.config.js中的 devServer 屬性下進行配置.代理後訪問 localhost:8088/ = http://xxx.xxx.xxx.xx/api
注首喚:只需要更改介面地址就可以切換不同環境。記得改完配置文件,要重啟項目,才生效
2.configs文件下index.ts網路請求介面配置。訪問到環境後有各種類型的介面有不同的前綴,根據需要進行配慎陪置
1.只需在根目錄下package.json文件里添加屬性
2.config里的配置同上
8. HTTP 400 錯誤是什麼原因
HTTP400 Bad Request 表示語義有誤,當前請求無法被伺服器理解。除非進行修改,否則客戶端不應該重復提交這個請求;請求參數有誤。
解決方案:
1)對照欄位名稱,類型保證一致性;
2)使用stringify將前端傳遞的對象轉化為字元串 ,data: JSON.stringify(param)。
(8)前端請求代理出錯擴展閱讀:
當用戶試圖通過HTTP或FTP協議訪問一台運行主機上的內容時,Web伺服器返回一個表示該請求的狀態的數字代碼。
該狀態代碼記錄在伺服器日誌中,同時也可能在 Web 瀏覽器或 FTP客戶端顯示。也就是我們打開頁面發生錯誤時瀏覽器顯示的錯誤信息代碼。狀態代碼可以指明具體請求是否已成功,還可以揭示請求失敗的確切原因。
HTTP400系列錯誤列表:
1、401 Unauthorized
當前請求需要用戶驗證。該響應必須包含一個適用於被請求資源的 WWW-Authenticate 信息頭用以詢問用戶信息。客戶端可以重復提交一個包含恰當的 Authorization 頭信息的請求。如果當前請求已經包含了 Authorization 證書,那麼401響應代表著伺服器驗證已經拒絕了那些證書。
如果401響應包含了與前一個響應相同的身份驗證詢問,且瀏覽器已經至少嘗試了一次驗證,那麼瀏覽器應當向用戶展示響應中包含的實體信息,因為這個實體信息中可能包含了相關診斷信息。參見RFC 2617。
2、402 Payment Required
該狀態碼是為了將來可能的需求而預留的。
3、403 Forbidden
伺服器已經理解請求,但是拒絕執行它。與401響應不同的是,身份驗證並不能提供任何幫助,而且這個請求也不應該被重復提交。如果這不是一個 HEAD 請求,而且伺服器希望能夠講清楚為何請求不能被執行,那麼就應該在實體內描述拒絕的原因。當然伺服器也可以返回一個404響應,假如它不希望讓客戶端獲得任何信息。
4、404 Not Found
請求失敗,請求所希望得到的資源未被在伺服器上發現。沒有信息能夠告訴用戶這個狀況到底是暫時的還是永久的。假如伺服器知道情況的話,應當使用410狀態碼來告知舊資源因為某些內部的配置機制問題,已經永久的不可用,而且沒有任何可以跳轉的地址。
404這個狀態碼被廣泛應用於當伺服器不想揭示到底為何請求被拒絕或者沒有其他適合的響應可用的情況下。出現這個錯誤的最有可能的原因是伺服器端沒有這個頁面。
5、405 Method Not Allowed
請求行中指定的請求方法不能被用於請求相應的資源。該響應必須返回一個Allow 頭信息用以表示出當前資源能夠接受的請求方法的列表。鑒於 PUT,DELETE 方法會對伺服器上的資源進行寫操作,因而絕大部分的網頁伺服器都不支持或者在默認配置下不允許上述請求方法,對於此類請求均會返回405錯誤。
9. 前端ajax請求出現400錯誤怎麼解決
ajax 出錯,有兩種可能。 發送數據的時候報錯 (URL 不對,參數不對 ) 接收數據的時候報錯(這個錯誤在你即使請求成功了,但是沒有返回值也會報錯)
10. vue在瀏覽器刷新後顯示代理錯誤
vue在瀏覽器刷新後顯示代理錯雹叢誤的原因是前端項目路由配置的時候路由的用了叢肆兄history模滲襲式。根據查詢相關公開信息,路由的模式改了,之後重新打包發到伺服器。