我尝试从Symfony 4 REST API中获取资源。我之前已经遇到了一些CROS错误(不同来源),并使用Google Chrome插件对其进行了修复,但是这次不同的是,我有一个授权标头。所以我想这是问题所在。
在Postman上一切正常,但我知道与实际的浏览器不同。
我遇到2个错误:
OPTIONS http://localhost:8000/api/game.index 405 (Method Not Allowed)
Access to fetch at 'http://localhost:8000/api/game.index' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
所以看来我发送了一个OPTIONS方法并收到405错误,但我仍然不明白为什么
这是我的代码
fetch(URL, {
method: 'GET',
headers: {
'Access-Control-Allow-Origin':'*',
'Access-Control-Allow-Methods' : 'POST, GET, OPTIONS, DELETE, PUT',
'Access-Control-Allow-Headers' : "Authorization",
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer: ' + token,
}
})
php后端,我默认将状态代码设置为200。
public function responseJson($data, int $status = 200) : Response
{
$jsonData = $this->serializer->serialize($data, 'json');
$response = new Response($jsonData);
$response->headers->set('Content-Type', 'application/json');
$response->setStatusCode($status);
return $response;
}
对不起,我知道这是一个常见错误,我到处都看到过很多有关此问题的帖子,但是我尝试的所有方法都行不通,并且我再也没有选择余地了。
感谢您阅读