0

在我的 Laravel 安装中,我通过 tymondesigns 和barryvdhDingo API进行了设置。JWT-AuthLaravel-cors

这是从前端(托管在不同的服务器上)登录和检索数据的过程:

  1. POST的凭据API
  2. 接收JWT令牌,然后将其localStorageBearer前面的密钥一起存储。此后,拦截器会自动获取并设置带有JWT令牌的 Authorization 标头。
  3. POST请求被发送到/users/me,这只是一个检索用户数据的路由。用户数据是username, email, permissions and messages目前自带的。基本上messages是一个Eloquent模型。顺便说一句,检索用户数据的方法,读取用户 using然后我使用's将数据发回。User::classhasMany(Message::class)$user = JWT::parseToken()->authenticate();Dingo$this->response()->item($user, new SelfTransformer());

所以在这一点上,一切似乎都运行良好。用户登录,用户对象填充了所有必要的东西,消息表填充了消息。

我正在对消息进行分页,所以目前我一次只收到 1 条消息。

现在的问题是,在这一点之后(在检索到用户对象之后),如果我提出另一个请求,假设 /users/me?messages=2要检索第二页消息,我会收到以下错误: No 'Access-Control-Allow-Origin' header is present on the requested resource.

如果我也尝试注销,我也会遇到同样的错误。

如果我尝试向已经注册的用户注册,我什至会遇到同样的错误。

所以感觉就像每次在 Laravel 中抛出异常时,Access-Control-Allow-Origin不再设置标题。

这是我的cors配置:

return [
    /*
     |--------------------------------------------------------------------------
     | Laravel CORS
     |--------------------------------------------------------------------------
     |

     | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
     | to accept any value.
     |
     */
    'supportsCredentials' => true,
    'allowedOrigins' => ['*'],
    'allowedHeaders' => ['Content-Type', 'Accept', 'Authorization', 'X-Requested-With', 'Origin'],
    'allowedMethods' => ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
    'exposedHeaders' => ['Authorization'],
    'maxAge' => 0,
    'hosts' => [],
];

如果我使用 Postman,一切正常。

另外,我注意到在我的网络选项卡中,始终设置了 2 个请求。一个将方法设置为OPTIONS,第二个是实际请求...

我越来越郁闷了...

4

2 回答 2

0

我不知道。在你app/Http/routes.php把这个放在顶部看看。

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT');
header("Access-Control-Allow-Headers: Authorization, X-Requested-With,  Content-Type, Accept");

希望能帮助到你!

于 2016-03-03T13:26:46.700 回答
0

这是飞行前的要求,我觉得没问题

于 2017-04-17T14:06:20.850 回答