HTTP 状态 405
早上好☕️,我的开发者同仁们👩💻。希望你们一切顺利,因为我也过得很好。今天,我决定为一些遇到 **405 方法不允许** 的人提供帮助。无论您是创建 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 的“headers/content-type”必须与其预期相匹配,否则它将返回 HTTP 405。
访问此链接了解有关此类错误的更多信息
**如果遇到同样的错误,可以检查以下几个区域**
**CORS 问题:**
如果您的前端和后端在不同的端口上运行(例如,前端在 4200 上,后端在 8080 上),请确保在后端服务器上正确配置 CORS(跨源资源共享),以允许来自前端源的请求3。
**调试服务器响应:**
在服务器端实现日志记录以捕获传入的请求及其方法。这可以帮助您确定请求是否到达服务器以及如何处理它。
**使用工具测试:**
使用 Postman 或 cURL 等工具手动向您的端点发送 POST 请求。这可以帮助隔离问题是出在您的 Angular 应用程序中还是出在服务器本身上。