솔루션" />
안녕하세요, 동료 개발자 여러분??. 내가 잘하고 있으니까 너도 잘 지내길 바라. 오늘은 405 Method Not Allowed를 겪고 있는 여러분 중 일부를 구출하기로 결정했습니다. REST API를 생성하든 URL을 요청하든 405 오류가 발생합니다. 이 기사에서 다뤘습니다.
내 URL을 요청하려고 했는데 위에서 언급한 오류가 발생했습니다
제가 요청한 URL은 다음과 같습니다
http://localhost:8080/users/services/start/import
@Path("/start") public class StartService { @GET @Path("/import") @Produces({"text/plain","application/xml","application/json"}) public String getVersion() { String ver=""; try{ Runtime rt = Runtime.getRuntime(); Process pr = rt.exec("C:\server\dgr -v" ); BufferedReader stdInput = new BufferedReader(new InputStreamReader (pr.getInputStream())); BufferedReader input = new BufferedReader(stdInput); // String ver =""; StringBuffer verOutput = new StringBuffer(); while((ver = input.readLine()) != null){ verOutput.append(ver + "\n"); System.out.println(ver); } }catch (Throwable t) { t.printStackTrace(); } finally { } return ver; } }
오류 원인과 해결 방법을 조사한 결과 POST 요청이나 VSV만 허용하는 항목에 대해 Get 요청을 시도하면 405 오류가 발생할 수 있음을 발견했습니다.
둘째, https가 필요한 메소드에서 http:를 시도했을 수도 있습니다
오류 원인이 컨텐츠 유형 문제인 것을 확인했습니다
@Produces({"text/plain","application/xml","application/json"})
을 변경했습니다.
이에
@Produces("text/plain") 광고가 완벽하게 작동했습니다.
API로 전송되는 헤더/콘텐츠 유형이 예상한 것과 일치해야 하기 때문입니다. 그렇지 않으면 HTTP 405가 반환됩니다.
이러한 유형의 오류에 대해 자세히 알아보려면 이 링크를 방문하세요
같은 오류가 발생할 경우 확인할 수 있는 부분
CORS 문제:
프런트엔드와 백엔드가 서로 다른 포트에서 실행 중인 경우(예: 4200의 프런트엔드 및 8080의 백엔드) 프런트엔드 원본의 요청을 허용하도록 백엔드 서버에 CORS(Cross-Origin Resource Sharing)가 올바르게 구성되어 있는지 확인하세요3.
서버 응답 디버깅:
들어오는 요청과 해당 메소드를 캡처하려면 서버 측에서 로깅을 구현하십시오. 이는 요청이 서버에 도달하는지 여부와 요청이 어떻게 처리되고 있는지 확인하는 데 도움이 됩니다.
도구를 사용한 테스트:
Postman 또는 cURL과 같은 도구를 사용하여 엔드포인트에 POST 요청을 수동으로 보냅니다. 이렇게 하면 문제가 Angular 애플리케이션 내부에 있는지 아니면 서버 자체에 있는지 구분하는 데 도움이 됩니다.
아래 댓글로 여러분의 생각을 공유해주세요⬇️
즐거운 화요일 보내세요??
위 내용은 HTTP 상태 - Rest API에 대한 메서드가 허용되지 않음 오류 -> 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!