Http post 405方法不允许

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Http post 405方法不允许相关的知识,希望对你有一定的参考价值。

如果这是一个新手问题或使用不准确的术语,请道歉。因为我是新手。

我构建了一个简单的python api来读取和写入数据库(csv文件)我的前端是Angular 5.我设法从服务器上的文件中完整地获取数据,但我无法发布到它。这是问题(似乎!)

我使用的方法是post,数据是JSON数组。

这是感兴趣的代码:component.ts方:

this._svc.postAPI(this.csvData)
    .subscribe(
      res => console.log(res),
    error => alert('Error!'),
  ()=> 'Data Submitted to database') 
  }

services.ts方面:

postAPI(data): Observable<any>{
    return this.http.post(this.urlAPI, data);
  }

我得到的错误是405方法不允许,控制台的网络显示:

一般

Request URL: http://192.168.0.2:5050/api
Request Method: OPTIONS
Status Code: 405 Method Not Allowed
Remote Address: 192.168.0.2:5050
Referrer Policy: no-referrer-when-downgrade

响应标题

Allow: POST
Content-Length: 23
Content-Type: text/plain; charset=utf-8
Date: Thu, 12 Jul 2018 03:20:39 GMT
Server: Python/3.5 aiohttp/2.3.10

请求标题

Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Access-Control-Request-Headers: content-type
Access-Control-Request-Method: POST
Connection: keep-alive
Host: 192.168.0.2:5050
Origin: http://evil.com/
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 
(Khtml, like Gecko) Chrome/67.0.3396.99 Safari/537.36

使用邮递员一切正常,URL似乎是正确的但问题似乎与数据本身有关。

我试过这些:

这不起作用:

postAPI(data): Observable<any>{
return this.http.post(this.urlAPI, '{}');
}

但是这个DID工作:

postAPI(data): Observable<any>{
return this.http.post(this.urlAPI, '[{}]');
}

这个DID工作:

postAPI(data): Observable<any>{
return this.http.post(this.urlAPI, '
[
    {
        "info": "A",
        "dev": "T",
        "but": "C",
        "msg": "X"
    }
]
');
    }

我相信我试图发布的数据也是这种格式,一个JSON数组。

非常感谢任何帮助。

答案

405表示您的脚本有问题。考虑到一个版本有效,它不太可能是Web服务器。您需要为此类型设置[]括号。

以上是关于Http post 405方法不允许的主要内容,如果未能解决你的问题,请参考以下文章

WebApi Post 方法总是返回“请求的资源不支持 http 方法 'GET'。”状态:405 方法不允许

Spring Boot POST 请求返回 http 状态 405“方法不允许”而不是 HTTP 状态 404

方法不允许 (POST) Django 405 错误

不带 URL 参数的 POST:405(不允许方法)

405 用于访问此页面的 HTTP 动词不被允许

自定义 Web api 上的 POST 405(不允许的方法)