Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重定向到Microsoft登录页时,Microsoft graph的cors问题_Php_Azure_Laravel 5_Cors_Microsoft Graph Api - Fatal编程技术网

Php 重定向到Microsoft登录页时,Microsoft graph的cors问题

Php 重定向到Microsoft登录页时,Microsoft graph的cors问题,php,azure,laravel-5,cors,microsoft-graph-api,Php,Azure,Laravel 5,Cors,Microsoft Graph Api,我正在开发laravel api,UI是angularjs,问题是当重定向到Microsoft登录页面时,Microsoft graph的cors问题,问题是 无法加载XMLHttpRequest . 重定向自 ”“到 “…rect_uri=https%3A%2F%2Freservations api.nymblpro.com%2Fcoordinator%2Fevent” 已被CORS策略阻止:请求需要飞行前,即 不允许跟随跨原点重定向 我试着设置cors中间件,但还是遇到了同样的问题。 我的代

我正在开发laravel api,UI是angularjs,问题是当重定向到Microsoft登录页面时,Microsoft graph的cors问题,问题是

无法加载XMLHttpRequest . 重定向自 ”“到 “…rect_uri=https%3A%2F%2Freservations api.nymblpro.com%2Fcoordinator%2Fevent” 已被CORS策略阻止:请求需要飞行前,即 不允许跟随跨原点重定向

我试着设置cors中间件,但还是遇到了同样的问题。 我的代码如下:

public function get_microsoft_token(Request $request)
{
    $provider = new \League\OAuth2\Client\Provider\GenericProvider([
        'clientId'                => 'fd482697-fd9f-46ac-ab3a-727e47517c8b',
        'clientSecret'            => 'WZOh3qLz7ZQyKemCQf3RsCF',
        'redirectUri'             => 'https://reservations-api.nymblpro.com/coordinator/event',
        'urlAuthorize'            => 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
        'urlAccessToken'          => 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
        'urlResourceOwnerDetails' => '',
        'scopes'                  => 'openid calendars.readwrite'
    ]);
    if (!$request->has('code')) {
        return redirect($provider->getAuthorizationUrl());
    }
    else {
        $accessToken = $provider->getAccessToken('authorization_code', [
            'code' => $request->input('code')
        ]);
        return ($accessToken->getToken());
    }
}

看起来您的AngularJs应用程序将调用您的Laravel应用程序的api,该api返回授权url,然后您的AngularJs前端将在AJAX函数中调用此url。所以这应该是罪犯

您可以尝试修改angularjs前端应用程序中的代码,将
$http.get()
函数更改为类似以下内容:

// similar behavior as an HTTP redirect
window.location.replace("http://stackoverflow.com");

// similar behavior as clicking on a link
window.location.href = "http://stackoverflow.com";

否则,您可以尝试在angularjs应用程序中使用adal for js。有关更多信息,请参阅。

可能与此相关。如果您还发布了发送请求的客户端JavaScript代码的相关部分,这将非常有用。@sideshowbarker这里是JavaScript“$scope.getTokenForCalender=function(){var url=“”然后(函数(结果){console.log(“日历集成的令牌-”+JSON.stringify(结果));},函数(err){console.log(JSON.stringify(err));}$scope.getTokenforcalander();这里err is nulli可以通过直接重定向到授权签名页面绕过这个问题,谢谢@garry liu和sidesshowbarker