【发布时间】:2019-08-10 12:42:03
【问题描述】:
我正在开发的应用程序有问题。 API 使用 PHP Symfony 4,应用程序使用 Ionic 4。
我在执行 PATCH 请求时遇到问题。该请求在 POSTMAN 以及我的手机上运行良好 但是在尝试使用浏览器(Google Chrome、Firefox)时,我遇到了 CORS 问题。
我已经询问并且我了解 PATCH 请求首先通过飞行前请求,因此发送请求 使用我的 API 的 OPTIONS 方法。
我管理了这个方法并返回了一个代码 200 然后我在我的 index.php 文件中允许了正确的标题,如下所示:
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
header("Access-Control-Allow-Methods: GET, HEAD, PATCH, OPTIONS, POST, PUT");
一开始,我遇到了第一个错误,表明请求没有返回代码 200,所以我在我的 API 中管理了 OPTIONS 方法。 然后我有以下错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
这很奇怪,因为之前没有出现错误,并且所有其他请求都有效。
此外,我尝试使用 POSTMAN 并且 OPTIONS 方法返回正确的标题。
你能帮帮我吗?
对不起,英语粗鲁。
【问题讨论】:
-
您是否也在实际请求中添加了标头?据我所知,您不必支持所有 http 方法。
-
我应该在哪个查询上添加标题?在前面?
-
应该在所有允许跨域的请求上添加 cors-headers。不仅仅是头部或选项。
-
是的,我将它们添加到我的 Symfony 项目根目录下的 index.php 文件中
-
请求的资源(您应该看到访问了哪个资源)是否是静态文件(位于 public/web 文件夹或子文件夹中)?因为这些通常是直接交付的,没有被 index.php 转发(但你可以强制这样的事情......)
标签: php symfony ionic-framework cors