我一直在开发一个与 PHP/Apache Web 服务交互的 Angular JS 应用程序。
到目前为止,它对于 POST 和 GET 请求工作正常,但对于 PUT 则出现以下错误
预检响应中的 Access-Control-Allow-Methods 不允许方法 PUT。
我已经用 Postman 测试了 API,它工作得很好
有办法解决我的问题吗?谢谢
请注意,API 服务器 Apache 已具有以下配置
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"
Header set Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS"
Options All
AllowOverride All
Allow from all
Chrome 有这个响应 header
HTTP/1.1 200 OK
Date: Mon, 15 Feb 2016 02:52:56 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Powered-By: PHP/5.5.9-1ubuntu4.14
Allow: GET,HEAD,PUT,PATCH,DELETE
Cache-Control: no-cache
Set-Cookie: laravel_session=eyJpdiI6IldvM3Z5eUpKcUI5Q0RXam5UN283TEE9PSIsInZhbHVlIjoiV3FnTVpUcFliWjZvczFrM2VuYXpBamI5NmIwR24rdThPWGRuMUZjbjd5K0I2N3F1REp4ZFJVc3U3QnhCZmxmZ0ZONDU4SEVtWm42SUVEWmJhRmF6M1E9PSIsIm1hYyI6ImMzOTVlNDZhZmNjYWNlM2I1N2FjYjQ4N2FhZDc5ZWY2MWJhYTdiNDBlMWExMGJkYzczYzE1MTczMzAyYzVkMjEifQ%3D%3D; expires=Mon, 15-Feb-2016 04:52:56 GMT; Max-Age=7200; path=/; httponly
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
最佳答案
抱歉,这个问题已经解决了一段时间了。这实际上是一个相当愚蠢的错误。如果我没记错的话,那是因为 API 端的参数有一个拼写错误
Chrome 上的飞行前错误消息可能具有误导性
如果你有像我一样的错误,请检查你的变量
关于angularjs - 预检响应中的 Access-Control-Allow-Methods 不允许方法 PUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35400892/