我用Laravel创建了一个API,并尝试将它用于一个Ionic 2项目。
我正试图向我的Laravel提出一个GET请求。
当我提出http请求时
auth/{prodiver}/callback/{userID}/{accessToken}我发现了一个错误:
Failed to load http://api.url.net/api/auth/facebook/callback/XXXX/MY_TOKEN: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8001' is therefore not allowed access.
我的路线如下:
Route::group(['middleware' => ['guest', 'cors']], function() {
Route::get('test', function () {
return response()->json('{dummy.data}', 200);
});
Route::get('auth/{prodiver}/callback/{userID}/{accessToken}', 'SocialAuthController@callback')->middleware('cors')->name('social.auth'); // social auth
});但是当我尝试使用相同的代码,使用路由test时,它可以工作,我得到了数据.
"facebook连接“并不是问题所在,成功的回调是触发的。
以下是callback()方法
public function callback($provider, $userID, $accessToken)
{
if ($provider == "facebook"){
$user = $this->createOrGetUser($userID, $accessToken);
auth()->login($user);
return response()->json($user, 200);
}
}所有其他http请求都能很好地工作..。
下面是相关的http请求(在Ionic项目中)
let headers = new Headers();
headers.append('Content-Type', 'application/json');
let url = this.baseApiUrl+'auth/facebook/callback/' + userID + '/' + accessToken;
this.http
.get(url, {headers: headers})
.map(res => res.json())
.subscribe(data => {
console.log(data)
}, err => {
this.onError(err);
}
);我不明白怎么回事,有人有线索吗?我完全厌倦了这个错误
非常感谢!)
发布于 2017-08-30 00:50:52
首先,为什么在定义第二条路由时设置cors中间件?它已经为整个小组设置好了。
其次,cors返回一个cors错误,以防代码中出现错误,这就是它的行为。
当发生错误时,中间件不会完全运行。因此,当这种情况发生时,您将不会看到实际的结果,而是会得到一个CORS错误。
尝试调试您的代码以找到一个bug。测试返回数据,这意味着这不是给出错误的cors,而是您的代码。
https://stackoverflow.com/questions/45949669
复制相似问题