the resource requested razón present origin missing faltante encabezado control allow javascript azure cors microsoft-graph

javascript - resource - Sin encabezado ''Access-Control-Allow-Origin'' con Microsoft Online Auth



razón encabezado cors access control allow origin faltante (2)

Estoy tratando de hacer una solicitud simple para obtener un token de acceso utilizando el punto final de Microsoft Graph OAuth. Cuando envío la solicitud simple a continuación recibo

No hay encabezado ''Access-Control-Allow-Origin'' presente en el recurso solicitado. El origen ''localhost: 8080 / myapprunninglocally'', por lo tanto, no tiene acceso permitido. ** "

var xhttp = new XMLHttpRequest(); xhttp.open("GET", "https://login.microsoftonline.com/common/oauth2/authorize?client_id=<client_id>&scope=wl.signin%20wl.calendars_update&response_type=token&redirect_uri=localhost:8080/myapprunninglocally", true); xhttp.send();

También he registrado esta aplicación usando Microsoft Azure Directory, solicité TODOS los permisos y usé el delegado client_id .

He leído sobre CORS y estoy al tanto de las Políticas de Origen Cruzado, sin embargo, estoy al tanto de que hay API que exponen puntos finales que incluyen el ''Access-Control-Allow-Origin'' en sus encabezados de respuesta. ¿Hay alguno capaz de ayudar?


No podrás ejecutar eso desde el cliente. Parte de la configuración de CORS requiere que microsoftonline.com agregue su dominio a su lista blanca admitida por CORS.

Te sugiero que llames a un servicio en tu servidor, que luego hace que la solicitud sea de servidor a servidor.


Para integrar AAD en JavaScript, le sugerimos que use azure-activedirectory-library-for-js que es una biblioteca en JavaScript para frontend para integrar AAD con facilidad.

Hay 2 opciones a las que debemos prestar atención antes de usar ADAL para JS:

Aquí está el ejemplo de código para adquirir el token de acceso de Microsoft Graph:

<script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.14/js/adal.min.js"></script> <body> <a href="#" onclick="login();">login</a> <a href="#" onclick="getToken()">access token</a> </body> <script type="text/javascript"> var configOptions = { tenant: "<tenant_id>", // Optional by default, it sends common clientId: "<client_id>", postLogoutRedirectUri: window.location.origin, } window.authContext = new AuthenticationContext(configOptions); var isCallback = authContext.isCallback(window.location.hash); authContext.handleWindowCallback(); function getToken(){ authContext.acquireToken("https://graph.microsoft.com",function(error, token){ console.log(error); console.log(token); }) } function login(){ authContext.login(); } </script>