symfony 4:CORS策略:对预检请求的响应未通过访问控制检查:它没有HTTP正常状态

时间:2019-07-06 16:16:04

标签: javascript rest cors authorization symfony4

我尝试从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;
}

对不起,我知道这是一个常见错误,我到处都看到过很多有关此问题的帖子,但是我尝试的所有方法都行不通,并且我再也没有选择余地了。

感谢您阅读

0 个答案:

没有答案