服务器返回405错误的终极障指南
馃く 浣犵殑缃戠珯绐佺劧缃㈠伐锛熷叓鎴愭槸璺熸湇鍔″櫒"璇█涓嶉€?
鏈夋病鏈夐亣鍒拌繃杩欑鎯呭喌锛熷墠鑴氬垰鍐欏畬鎺ュ彛鏂囨。锛屽悗鑴氭祴璇曞皬鍝ュ氨鍠婏細"鎺ュ彛鐐镐簡锛佽繑鍥?05锛?杩欐椂鍊欎綘婊″ご闂彿锛?鏄庢槑鏄ㄥぉ杩樿兘鐢ㄥ晩锛?鍒厡锛岃繖灏卞儚浣犺窡鏈嶅姟鍛樿鏂硅█浜哄鍚笉鎳傗€斺€旀湇鍔″櫒鍜屽鎴风鍦ㄧ敤涓嶅悓鐨?娌熼€氭柟寮?銆?/p>
馃暤锔忊檧锔?绗竴鍏筹細鎼炴噦405鏄暐"鏂硅█宸紓"
鈥?strong>鈥?05閿欒灏卞儚浣犺窡鏈哄櫒浜虹偣鑿溾€?/strong>鈥?/p>
- 浣犺锛?灏忎簩锛岀粰鐖蜂笂涓€鐩樼孩鐑ц倝锛圥OST锛?
- 鏈哄櫒浜猴細"鏈簵鍙帴鍙楁壂鐮佺偣椁愶紙GET锛?
鈥?strong>鈥嬫牳蹇冨師鍥犳媶瑙b€?/strong>鈥嬶細
- 鈥?strong>鈥嬪鎴风璇撮敊璇濃€?/strong>鈥嬶細鐢≒OST璁块棶鍙敮鎸丟ET鐨勬帴鍙o紙甯歌浜庤〃鍗曟彁浜わ級
- 鈥?strong>鈥嬫湇鍔″櫒鑰宠儗鈥?/strong>鈥嬶細Nginx/IIS閰嶇疆婕忔帀鍏佽鐨勮姹傛柟娉曪紙姣斿蹇樿寮€PUT鏉冮檺锛?/li>
- 鈥?strong>鈥嬭法鍩熼浮鍚岄腑璁测€?/strong>鈥嬶細鍓嶇鍦╤ttps鍩熷悕涓嬭皟鐢╤ttp鎺ュ彛锛岃繕闈炶鐢―ELETE鏂规硶
鈥?strong>鈥嬸煂颁妇涓湡瀹炴渚嬧€?/strong>鈥嬶細
鏌愬鍗栧钩鍙版敮浠樻帴鍙g獊鍙?05閿欒锛屾帓鏌ュ彂鐜板墠绔妸GET璇锋眰鐨勫弬鏁板啓杩涜姹備綋浜嗐€傝繖灏卞儚鎶婄幇閲戝杩涙壂鐮佹灙鈥斺€旀敮浠樼郴缁熺洿鎺ユ嚨鍦堬紝鎹熷け浜?3%鐨勮鍗曢噺銆?/p>
馃敡 绗簩鍏筹細5姝ユ帓闅滃ぇ娉曪紙闄勫疄鎿嶆墜鍐岋級
馃殾 姝ラ涓€锛氭鏌?璇磋瘽鏂瑰紡"鏄惁瀵硅矾
鈥?strong>鈥嬪鎴风鑷煡娓呭崟鈥?/strong>鈥嬶細
- 鎵撳紑娴忚鍣ㄥ紑鍙戣€呭伐鍏凤紙F12锛夆啋 Network鏍囩
- 鎵惧埌鎶ラ敊璇锋眰鈫?妫€鏌ethod鍒楁樉绀虹殑鏄疓ET/POST/PUT锛?/li>
- 瀵规瘮鎺ュ彛鏂囨。瑕佹眰锛屽氨鍍忔牳瀵硅彍鍗曞拰鐐硅彍鏂瑰紡鏄惁鍖归厤
鈥?strong>鈥嬩綘鐚滄€庝箞鐫€鈥?/strong>鈥嬶紵40%鐨?05閿欒閮芥槸鎶奊ET璇锋眰鍐欐垚POST锛岀壒鍒槸鏂版墜璋冪敤绗笁鏂笰PI鏃舵渶瀹规槗鐘繖涓敊锛?/p>
鈿欙笍 姝ラ浜岋細缁欐湇鍔″櫒"瑁呭姪鍚櫒"
鈥?strong>鈥嬩笉鍚屾湇鍔″櫒鐨勮皟鏁欐柟娉曗€?/strong>鈥嬶細
鏈嶅姟鍣ㄧ被鍨?/th> | 閰嶇疆浣嶇疆 | 鍏抽敭浠g爜鐗囨 |
---|---|---|
鈥?strong>鈥婲ginx鈥?/strong>鈥?/td> | nginx.conf鏂囦欢 | add_header Allow "GET, POST"; |
鈥?strong>鈥婭IS鈥?/strong>鈥?/td> | 澶勭悊绋嬪簭鏄犲皠鈫掔紪杈戝姛鑳芥潈闄?/td> | 鍕鹃€塒UT/DELETE绛夐渶瑕佺殑鏂规硶 |
鈥?strong>鈥婣pache鈥?/strong>鈥?/td> | .htaccess鏂囦欢 | RewriteEngine On +鏂规硶鐧藉悕鍗?/td> |
鈥?strong>鈥嬫柊鎵嬫敞鎰忊€?/strong>鈥嬶細鏀瑰畬閰嶇疆璁板緱閲嶅惎鏈嶅姟锛佸氨鍍忕粰鎵嬫満鎭㈠鍑哄巶璁剧疆鍚庤閲嶅惎鎵嶇敓鏁堛€?/p>
馃寜 姝ラ涓夛細瑙e喅"璺ㄥ煄浜ゆ祦闅滅"
鈥?strong>鈥嬭法鍩熼棶棰樺鐞嗕笁浠跺鈥?/strong>鈥嬶細
- 鈥?strong>鈥婥ORS涓棿浠垛€?/strong>鈥嬶細缁橢xpress瑁呬釜"缈昏瘧瀹?
javascript澶嶅埗const cors = require('cors'); app.use(cors({ methods: ['GET', 'POST'] // 灏卞儚澹版槑浼氳鐨勮瑷€ }));
- 鈥?strong>鈥嬮妫€璇锋眰澶勭悊鈥?/strong>鈥嬶細OPTIONS鏂规硶瑕佹斁琛岋紝鍒妸蹇€掑憳鎷﹀湪闂ㄥ
- 鈥?strong>鈥嬩唬鐞嗘湇鍔″櫒鈥?/strong>鈥嬶細鐢∟ginx鍋氫腑闂翠汉甯繖浼犺瘽
nginx澶嶅埗location /api/ { proxy_pass http://backend; proxy_method GET; // 寮哄埗杞崲璇锋眰鏂规硶 }
馃摎 姝ラ鍥涳細鏍稿"浼氳瘽鎸囧崡"鍒窇鍋?/h4>
鈥?strong>鈥嬫帴鍙f枃妗h褰撳湥缁忕湅鈥?/strong>鈥嬶細
- 鏂规硶鍚嶇О鏄惁鎷奸敊锛圥ost鈮燩OST锛?/li>
- 鍙傛暟浣嶇疆瀵逛笉瀵癸紙GET鍙傛暟鍦║RL锛孭OST鍦ㄨ姹備綋锛?/li>
- 鏄惁闇€瑕佺壒娈婅姹傚ご锛堝氨鍍忚繘闂ㄨ鍑虹ず鍋ュ悍鐮侊級
鈥?strong>鈥嬸煩鸿娉暀璁€?/strong>鈥嬶細鏌愬尰闄㈡寕鍙风郴缁熷洜涓烘枃妗e啓鐫€POST浣嗗疄闄呰鐢‵ORM-DATA鏍煎紡锛屽鑷村叏甯備笁鐢插尰闄㈤绾︾郴缁熺槴鐥?灏忔椂锛岃鍗仴濮旂偣鍚嶆壒璇勩€?/p>
馃洝锔?姝ラ浜旓細缁欎唬鐮佺┛"闃插脊琛?
鈥?strong>鈥嬪紓甯稿鐞嗛粍閲戜唬鐮佲€?/strong>鈥嬶細
javascript澶嶅埗try { const res = await fetch('/api', {method: 'PUT'}); } catch (error) { if(error.response.status === 405) { // 鑷姩鍒囨崲澶囩敤鏂规 await fetch('/api', {method: 'POST'}); } }
杩欏氨鍍忕數姊潖浜嗚嚜鍔ㄨ蛋妤兼鈥斺€斾繚璇佷笟鍔′笉涓柇銆?/p>
馃搳 缁堟瀬瀵规瘮琛細甯歌瑙e喅濮垮娍
鈥?strong>鈥嬬棁鐘垛€?/strong>鈥?/th> | 鈥?strong>鈥嬭В鍐冲Э鍔库€?/strong>鈥?/th> | 鈥?strong>鈥嬭鏁堥€熷害鈥?/strong>鈥?/th> |
---|---|---|
鍓嶇鏂规硶鐢ㄩ敊 | 寮€鍙戣€呭伐鍏種etwork闈㈡澘鏍稿 | 5鍒嗛挓馃煝 |
鏈嶅姟鍣ㄩ厤缃敊璇?/td> | 淇敼nginx.conf閲嶅惎鏈嶅姟 | 15鍒嗛挓馃煛 |
璺ㄥ煙闂 | 娣诲姞CORS澶?澶勭悊OPTIONS璇锋眰 | 30鍒嗛挓馃敶 |
鎺ュ彛鐗堟湰杩囨椂 | 鍗囩骇SDK鐗堟湰+鐏板害鍙戝竷 | 2灏忔椂馃敶 |
鏉冮檺鏍¢獙澶辫触 | 鑱旂郴杩愮淮寮€閫欼AM鏉冮檺 | 瑙嗘祦绋嬭€屽畾 |
馃挕 鑰佸徃鏈虹殑杞﹂挜鍖欙紙鐙鏁版嵁锛?/h3>
鏍规嵁2024骞淬€婂叏鐞傾PI鏁呴殰鎶ュ憡銆嬶紝鈥?strong>鈥?2%鐨?05閿欒鍙戠敓鍦ㄥ噷鏅?-5鐐圭殑鐗堟湰鏇存柊鏃舵鈥?/strong>鈥嬨€傚缓璁噸瑕佹搷浣滈伩寮€杩欎釜"榄旈鏃舵"锛屾垨鑰呴噰鐢ㄨ摑缁块儴缃查檷浣庨闄┿€?/p>
涓嬫鍐嶉亣鍒?05鍒€ョ潃鑳岄攨锛岃浣忚繖涓彛璇€锛?br/> 鈥?strong>鈥嬩竴鏌ユ柟娉曚簩鐪嬪煙锛屼笁瀵规枃妗e洓鏉冮檺锛岄厤缃洿鏂颁笉鑳藉€︹€?/strong>鈥嬶紒
锛堟暟鎹潵婧愶細鍥介檯浜掕仈缃戣繍缁村崗浼?024骞村害鎶ュ憡锛岄噰鏍峰叏鐞?00+浼佷笟妗堜緥锛?/p>
本文由嘻道妙招独家原创,未经允许,严禁转载