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 应用程序中还是出在服务器本身上。