Angular $http CORS 405 方法不允许

Posted

技术标签:

【中文标题】Angular $http CORS 405 方法不允许【英文标题】:Angular $http CORS 405 Method Not Allowed 【发布时间】:2016-08-05 23:00:26 【问题描述】:

我正在尝试从带有角度 $http.get 模块的 api 系统获取,但是:

api 端点系统只接受 GET 方法,不能使用 OPTION 方法

请求标头:

Host: www.example.com
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: GET
Access-Control-Request-Headers: x-device-type,x-software-version,x-unit-measurement
Origin: http://localhost:3000
Connection: keep-alive

响应标题:

状态码:405 Method Not Allowed

Access-Control-Allow-Headers: Content-Type, Accept, origin, referring-domain, X-UNIT-MEASUREMENT, X-AUTH-TOKEN, X-DEVICE-TYPE, X-SOFTWARE-VERSION
Access-Control-Request-Method: GET, POST, PUT, DELETE, OPTIONS
Allow: GET
Cache-Control: private,no-transform
Content-Length: 1565
Content-Type: text/html; charset=UTF-8
Date: Thu, 14 Apr 2016 11:41:13 GMT
Server: Microsoft-IIS/8.5
X-API-VERSION: 1.40.1.0
X-INSTANCE-ID: ALL
X-Powered-By: ASP.NET
access-control-allow-credentials: true
access-control-allow-origin: *
p3p: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"

我刚试过这个东西:

1:设置默认 Content-Type 甚至 text/plain 和其他类型 [Not Working]

$httpProvider.defaults.headers.common['Content-Type'] ='application/x-www-form-urlencoded; charset=UTF-8';

【问题讨论】:

***.com/questions/15584909/…你查了吗? 很遗憾我无法访问 api 服务器来编辑配置文件 你尝试过提出jsonp请求吗? jsonp 运行良好,但我无法将 X 标头设置为 jsonp,另一方面我也有 POST DELETE 和其他方法 【参考方案1】:

因为我使用 Atom Electron shell 来运行我的应用程序,所以我的快速解决方案是使用 --disable-web-security 在浏览器中禁用 CORS 保护。

【讨论】:

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

Angular 7:发送 post 请求给出错误 405(不允许的方法)

由于有问题的 405 错误而禁用 CORS

CORS 405(不允许的方法)

不允许使用 CORS 405 方法

来自 Angular 的 405

CORS 问题? - 预检响应包含无效的 HTTP 状态代码 405