1. 主页 > 小妙招

服务器返回405错误的终极障指南


馃く 浣犵殑缃戠珯绐佺劧缃㈠伐锛熷叓鎴愭槸璺熸湇鍔″櫒"璇█涓嶉€?

鏈夋病鏈夐亣鍒拌繃杩欑鎯呭喌锛熷墠鑴氬垰鍐欏畬鎺ュ彛鏂囨。锛屽悗鑴氭祴璇曞皬鍝ュ氨鍠婏細"鎺ュ彛鐐镐簡锛佽繑鍥?05锛?杩欐椂鍊欎綘婊″ご闂彿锛?鏄庢槑鏄ㄥぉ杩樿兘鐢ㄥ晩锛?鍒厡锛岃繖灏卞儚浣犺窡鏈嶅姟鍛樿鏂硅█浜哄鍚笉鎳傗€斺€旀湇鍔″櫒鍜屽鎴风鍦ㄧ敤涓嶅悓鐨?娌熼€氭柟寮?銆?/p>


馃暤锔忊檧锔?绗竴鍏筹細鎼炴噦405鏄暐"鏂硅█宸紓"

鈥?strong>鈥?05閿欒灏卞儚浣犺窡鏈哄櫒浜虹偣鑿溾€?/strong>鈥?/p>

  • 浣犺锛?灏忎簩锛岀粰鐖蜂笂涓€鐩樼孩鐑ц倝锛圥OST锛?
  • 鏈哄櫒浜猴細"鏈簵鍙帴鍙楁壂鐮佺偣椁愶紙GET锛?

鈥?strong>鈥嬫牳蹇冨師鍥犳媶瑙b€?/strong>鈥嬶細

  1. 鈥?strong>鈥嬪鎴风璇撮敊璇濃€?/strong>鈥嬶細鐢≒OST璁块棶鍙敮鎸丟ET鐨勬帴鍙o紙甯歌浜庤〃鍗曟彁浜わ級
  2. 鈥?strong>鈥嬫湇鍔″櫒鑰宠儗鈥?/strong>鈥嬶細Nginx/IIS閰嶇疆婕忔帀鍏佽鐨勮姹傛柟娉曪紙姣斿蹇樿寮€PUT鏉冮檺锛?/li>
  3. 鈥?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>鈥嬶細

  1. 鈥?strong>鈥婥ORS涓棿浠垛€?/strong>鈥嬶細缁橢xpress瑁呬釜"缈昏瘧瀹?
javascript澶嶅埗
const cors = require('cors');
app.use(cors({
  methods: ['GET', 'POST'] // 灏卞儚澹版槑浼氳鐨勮瑷€
}));
  1. 鈥?strong>鈥嬮妫€璇锋眰澶勭悊鈥?/strong>鈥嬶細OPTIONS鏂规硶瑕佹斁琛岋紝鍒妸蹇€掑憳鎷﹀湪闂ㄥ
  2. 鈥?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>

本文由嘻道妙招独家原创,未经允许,严禁转载