【发布时间】:2020-03-19 23:40:26
【问题描述】:
我正在制作简单的待办事项应用程序,后端使用 Symfony 4,前端使用 Vue.js。
由于一些其他端点工作正常,我收到405 错误状态未知原因。
这是我listController的一部分:
/**
* @return \FOS\RestBundle\View\View
*/
public function getListsAction()
{
$data = $this->taskListRepository->findAll();
return $this->view($data, Response::HTTP_OK);
}
/**
* @Rest\RequestParam(name="title", description="Title of the list", nullable=false)
* @param ParamFetcher $paramFetcher
* @return \FOS\RestBundle\View\View
*/
public function postListsAction(ParamFetcher $paramFetcher)
{
$title = $paramFetcher->get('title');
if ($title) {
$list = new TaskList();
$preferences = new Preference();
$preferences->setList($list);
$list->setPreferences($preferences);
$list->setTitle($title);
$this->entityManager->persist($list);
$this->entityManager->flush();
return $this->view($list, Response::HTTP_CREATED);
}
return $this->view(['title' => 'This cannot be null'], Response::HTTP_BAD_REQUEST);
}
get 操作在这里正常工作,它允许我从 db 获取所有列表
和nelmio_cors.yaml 文件:
nelmio_cors:
defaults:
origin_regex: true
allow_credentials: true
allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
allow_methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS']
allow_headers: ['Content-Type', 'Authorization', 'origin', 'Accept', 'bearer', 'Allow']
expose_headers: ['Link']
max_age: 3600
paths:
'^/': ~
如您所见,允许使用 POST 方法。
如图所示,方法发生在预期方法和端点、注册和登录检查下,其中方法未指定使用 POST 正常工作
网络错误:
在控制台中我收到 CORS 错误。
【问题讨论】:
-
您需要确保服务器系统允许 OPTIONS 请求。这是与您的 CORS 配置不同的问题。如果您在 Apache 下运行 php/symphony4 设置,那么可能是 OPTIONS 请求被 Apache 阻止了;如果是这样,请参阅stackoverflow.com/a/45490500/441757 的答案以获取有关如何使 Apache 允许 OPTIONS 请求的指导。
-
杰克,看到下面的答案了吗?有什么反馈吗?
-
yivi 我会反馈的,稍后我现在就在工作中