标签: http-status-code-405

405:不允许的方法

编辑:摘要:似乎我的网络应用程序可以被任何人(只有Firefox或Chrome)和我使用我的主计算机访问.如果我尝试从我的任何其他LAN 访问http://luiscarlosch.com/WebFormClean.aspx它会收到405错误

我可以从localhost完美地调用WCF Web方法.我发布到这个服务器:http://luiscarlosch.com/WebFormClean.aspx(只有firefox或chrome)与Visual Studio发布工具,它工作正常.问题是当尝试从另一台计算机访问它时.我得到405:方法不允许.但它确实有意义,因为当我从发布者计算机远程访问它时它工作正常,正如我所说.任何的想法?

[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class ContactProxy
{
    [WebGet()]
    [OperationContract]
    public Contact getByID(int IDContact)
    {
        Contact contact = new Contact(IDContact);
        return contact;
    }
    [OperationContract]
    public EntityData insertEntityData(int IDEntityDataFieldType, int IDContact, String value)
    {
        //Contact contact = new Contact();
       // contact.insertEntityData(IDEntityDataFieldType, IDContact, value);
        EntityData entityData = new EntityData();
        entityData.save(IDEntityDataFieldType, IDContact, value);

        return entityData;
    }
}
Run Code Online (Sandbox Code Playgroud)

这两种方法似乎都不起作用.

我刚刚注意到一些用户能够访问http://luiscarlosch.com/WebFormClean.aspx,因为他们更改了值.所以.一些客户可以阅读方法,但有些不能.这应该发生了.

Web配置

<?xml version="1.0"?>

<configuration>
  <configSections>
  </configSections>
  <connectionStrings>
    <add name="ApplicationServices" …
Run Code Online (Sandbox Code Playgroud)

.net wcf webmethod http-status-code-405

6
推荐指数
1
解决办法
1万
查看次数

"405方法不允许" - 使用ASP.NET jQuery ajax POST时

我搜索了与类似问题相关的大量不同的现有SO问题,但我找不到与我的问题相关的任何内容.

我有以下jQuery代码:

$.ajax({
   url: "Index.aspx/DeclineRequest"
   , type: 'POST'
   , contentType: 'application/json; charset=utf-8'
   , dataType: 'json'
   , data: JSON.stringify({ RequestId: requestId })
});
Run Code Online (Sandbox Code Playgroud)

我正在使用一种非常类似的技术在另一个ASP.NET Web应用程序上POST数据,这很好用.但是,此应用程序返回以下错误:

"NetworkError:405方法不允许 - http:// localhost:57255 / ....."

我找不到这两个应用程序的任何不同,所以我很困惑为什么这不起作用.

我能想到的这两个应用程序之间的唯一区别是,正在运行的应用程序是.NET 2.0,而无法运行的应用程序是.NET 3.5.

我已经尝试将以下内容添加到我的中web.config,但我仍然得到相同的405错误:

<webServices>
   <protocols>
     <add name="HttpPost"/>     
     <add name="HttpPostLocalhost"/>   
   </protocols>      
</webServices>
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

更新(16:40):我已将此应用程序移动到IIS,并且不再返回405错误.但是,我们的开发环境只是localhost.为什么这只会在localhost上出错?

asp.net jquery post http-status-code-405

6
推荐指数
1
解决办法
1万
查看次数

HTTP状态405 - 此URL不支持HTTP方法GET

下面的代码来自一本书,所以它不会出错.但我不知道如何解决这个错误.当删除方法doGet()时,同样的错误!

"HTTP状态405 - 此URL不支持HTTP方法GET"

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PDFServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override 
protected void doGet(HttpServletRequest request,HttpServletResponse response) 
throws IOException,ServletException{
    this.doPost(request,response);
}
@Override 
protected void doPost(HttpServletRequest request,HttpServletResponse response) 
                                   throws IOException,ServletException{
    response.setContentType("application/pdf");
    ServletOutputStream out=response.getOutputStream();
    File pdf=null;
    BufferedInputStream buf=null;
    try{
        pdf=new File("C:\\Users\\lk\\Desktop\\Desktop\\ example.pdf");
        response.setContentLength((int)pdf.length());
        FileInputStream input=new FileInputStream(pdf);
        buf=new BufferedInputStream(input);
        int readBytes=0;
        while((readBytes=buf.read())!=-1)    out.write(readBytes);
    }catch(IOException e){
        System.out.println("file not found!");
    }finally{
        if(out!=null) …
Run Code Online (Sandbox Code Playgroud)

servlets http-get http-status-code-405

6
推荐指数
2
解决办法
6万
查看次数

ServiceStack Backbone.Todos不允许删除405

我意识到点击Backbone.Todos示例"清除x已完成的项目"我得到DELETE 405不允许...

我从以前的帮助和文档中了解到,如果我想启用DELETE PUT PATCH ...我需要设置

X-http-method-override : DELETE

如果它是一个表格或jquery.

但我不确定如何在Backbone.Todos示例中完成此操作,因为我是backbone.js的新手.

你能指出如何修复DELETE 405吗?谢谢.

编辑---------------------------------------

我总是可以改变路线......

[Route("/todos/add")] //C - post
[Route("/todos/{id}")] //R - get
[Route("/todos/{id}/edit")] //U - post
[Route("/todos/{id}/delete")] //D - post
Run Code Online (Sandbox Code Playgroud)

所以,只有Post和Get足以完成这项工作.但与以下相比,它看起来并不十分宁静:

[Route("/todos/{id}", "Delete")] //D - delete
Run Code Online (Sandbox Code Playgroud)

可以?

c# http-status-code-405 backbone.js servicestack

6
推荐指数
1
解决办法
1898
查看次数

带有响应405的S3 POST请求到S3

我有S3的以下CORS配置,以便使用我的一个桶作为静态网站托管:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
    </CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

然后我有以下编辑重定向规则:

<RoutingRules>
    <RoutingRule>
    <Condition>
        <KeyPrefixEquals>abc</KeyPrefixEquals>
    </Condition>
    <Redirect>
        <HostName>myec2instance.com</HostName>
    </Redirect>
</RoutingRule>
Run Code Online (Sandbox Code Playgroud)

我想要做的是当S3收到POST/abc将请求和请求主体重定向到我的ec2实例时.重定向规则工作正常(我能够通过将POST切换到GET请求来测试它)但是由于任何原因,S3在请求是POST时返回HTTPResponse 405.有什么想法吗?

http-post amazon-s3 amazon-ec2 amazon-web-services http-status-code-405

6
推荐指数
1
解决办法
6121
查看次数

为什么我得到"不允许的方法"

我正在尝试使用Microsoft Bot Framework和一个简单的Q/A场景.我按照" 连接器入门"页面上的步骤进行操作.但是,在我注册我的机器人并上传它之后,当我在机器人框架网站上测试它时,我得到一个方法不允许的错误.我可以在模拟器中运行机器人就好了.我知道这是一个405错误,但我不明白的是它试图做什么.有人知道吗?

方法不允许错误pic

http-status-code-405 botframework

6
推荐指数
1
解决办法
2024
查看次数

HTTP POST方法在WebApi上像GET一样对待

我一直在创建一个WebApi控制器,我正在尝试使用HttpPost请求提交新用户进行注册.这在我的localhost上工作正常,但是当我将它发布到Azure时,我得到一个405方法不允许错误消息:"请求的资源不支持http方法'GET'".

我使用邮递员来检查操作,所以我使用生成代码来查看请求,如下所示:

POST /api/account/register/student HTTP/1.1
Host: www.l3cture.com
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: 27c1b2ab-96ad-4a99-b271-4030402768e7
Run Code Online (Sandbox Code Playgroud)

所以我可以清楚地看到请求是POST.以下是具有其属性的控制器动作代码(我目前已对其进行了简化,因此不会发布任何模型,并且会发生相同的行为)

[HttpPost]
[Route("register/student")]
[AllowAnonymous]
public async Task<IHttpActionResult> PostStudent(/*RegisterStudent model*/)
{
    //Implementation of register
    return Ok();
}
Run Code Online (Sandbox Code Playgroud)

我已经检查了属性的命名空间,它是System.Web.Http,因此它不会与MVC命名空间混淆.

有趣的是,当我将方法更改为HttpGet,并使用postman对其进行POST时,我收到状态200.这几乎就像HttpPost请求被我的控制器一样对待HttpGet.

我在其他地方使用过HttpPut和HttpDelete,它们都运行良好.

我不确定如何解决这个问题,并且想知道是否有人有任何想法?如果我需要发布更多代码以便澄清,请告诉我.

提前致谢

c# http-method http-status-code-405 asp.net-mvc-4 asp.net-web-api2

6
推荐指数
1
解决办法
1923
查看次数

.NET core OPTIONS 请求返回 405 错误

我需要向 .NET core 3.1 API 添加 CORS 支持(是 2.2,但我决定同时更新)。我以为这会很容易。这里的文档: https: //learn.microsoft.com/en-us/aspnet/core/security/cors ?view=aspnetcore-3.1 看起来很简单。我希望在所有端点上支持相同的 CORS 策略。所以,我想我可以不理会我的控制器,只对startup.cs 进行更改。我缺少什么?

我有一个 POST 端点,但 OPTIONS 请求返回 405 错误。我认为 CORS 中间件应该处理请求,这样我就不必在控制器内部考虑 CORS。

启动.cs

  namespace MyAPI
  {
    public class Startup
    {

        readonly String ALLOW_ALL = "AllowAll";
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // services.Configure<IISOptions>(options =>
            // { …
Run Code Online (Sandbox Code Playgroud)

c# cors http-status-code-405 .net-core

6
推荐指数
1
解决办法
5257
查看次数

错误 405:方法不允许

我有我的 json 数据,我需要将其发布到 url 或仅更新我的站点 url 之一中的 json 数据。但我收到 405 错误。这是我的代码。

    $.post("details", {name: "John", location: "us"});
Run Code Online (Sandbox Code Playgroud)

javascript ajax json http-status-code-405

5
推荐指数
1
解决办法
2万
查看次数

Vercel 生产版本返回 POST 和 GET 的 405 状态代码

我正在尝试为大学的在线实验建立一个网站。为此,我在几个月前接触了 MERN 堆栈,并且或多或少在本地完成了该网站。现在,每当我通过 Vercel 切换到生产版本时,与数据库的后端连接都会抛出405 错误

使用之前版本的官方文档,我能够启动相同的连接,但除 Chrome 之外的任何浏览器都不允许我获取数据。因此,我将整个后端从 YouTube 教程更改为这个 GitHub 存储库。该解决方案在开发版本中再次完美运行,但在生产中却失败了。经过一些调试后,我发现问题出在我传递的.post(URL)中(在 /src/Pages/Home1.js 中):

import axios from "axios";

(...)
    axios
      .post("/api/participants", passvalue)
      .then(() => {
        console.log("new participant added with AXIOS");
      })
      .catch((e) => {
        console.log("Unable to add with AXIOS: ", e);
      });
(...)
Run Code Online (Sandbox Code Playgroud)

在本地构建中,完整的 URL 是在我的.envhttp://localhost:5001/api/participants文件中定义 PORT 5001 的位置。默认情况下,此 URL 应创建GET请求并根据我的路由(/server/routes/participants.js) 列出所有虚拟 mongodb 条目:


const express = require("express");
const router = express.Router();
const …
Run Code Online (Sandbox Code Playgroud)

backend http-status-code-405 reactjs mern vercel

5
推荐指数
0
解决办法
2072
查看次数