[英]Laravel + Dingo + JWT + cors and OPTIONS method
在我的Laravel安装中,我已经设置了Dingo API
以及tymondesigns的JWT-Auth
和Laravel-cors
cors。
这是从前端(托管在其他服务器上)登录和检索数据的过程:
POST
凭证到API
JWT
令牌,然后将其存储在localStorage
并在前面带有Bearer
密钥。 此后,拦截器将自动获取并设置带有JWT
令牌的Authorization标头。 POST
请求发送到/users/me
,这只是一条检索用户数据的途径。 用户数据目前带有username, email, permissions and messages
。 messages
是一种Eloquent
模型,其中User::class
基本具有hasMany(Message::class)
。 顺便说一句,检索用户数据的方法使用$user = JWT::parseToken()->authenticate();
读取用户$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
,第二种是实际请求...
我很沮丧...
我不确定。 在您的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");
希望能帮助到你!
那是飞行前的要求,我认为很好
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.