2015-01-16 14 views
8

Ho cercato per ore per questo e non riesco a trovare una singola cosa che risponda alla domanda. Ho creato e pubblicato un nuovo servizio di Azure Machine Learning e ho creato un endpoint. Posso chiamare il servizio utilizzando il postino REST CLient, ma accedervi tramite una pagina Web JavaScript restituisce un log della console dicendo che CORS è abilitato per il servizio. Ora, per la vita di me, non riesco a capire come disabilitare CORS per i servizi di Azure Machine Learning. Qualsiasi aiuto sarebbe molto apprezzato, grazie!Azure Machine Learning - CORS

+0

Ciao Neil, sto cercando di utilizzare l'API Azure ML pure. Sto cercando di usarlo con Ruby on Rails. Hai avuto qualche successo con JavaScript? –

+0

Ciao Tyre, purtroppo no, ancora in attesa di una risposta per questo. Sono contento che qualcun altro si stia chiedendo la stessa cosa! – Neil

+0

http://stackoverflow.com/questions/27576426/connect-to-microsoft-azure-machine-learning-studio-api-with-ruby-instead-of-pyth –

risposta

4

Al momento, non supportiamo la disattivazione CORS sul lato API, ma è possibile utilizzare l'opzione di cui sopra oppure è possibile utilizzare il servizio di gestione API per disabilitare CORS. I collegamenti sottostanti dovrebbero aiutarti con questo

Ecco i link: step by step guida, anche questo video sull'impostazione delle intestazioni e this doc sulle politiche.

servizio API di gestione permette CORS attivando nella pagina di configurazione API

+0

Questo aiuta - grazie! Provalo – Neil

+0

Sebbene questa risposta risolva il problema dell'OP, il fatto che un servizio Web Azure ML già pubblicato (e che costa denaro reale) deve essere racchiuso in un servizio di gestione API di Azure (che costa ancora più denaro) solo per superare un La funzionalità mancante nel servizio Azure ML sottostante (disabilitazione di CORS) è moralmente ripugnante al meglio. – tatlar

2

È necessario avviare il browser con --disable-web-security (Chrome). Ecco alcuni jQuery che mi ha permesso di chiamare il servizio dopo la ri-iniziare il mio browser con --disable-web-sicurezza:

$(document).ready(function() { 
    var ajaxData = "-- the request body "; 
    var serviceUrl = "https://ussouthcentral.services.azureml.net/workspaces/00e36959fc3e4673a32eae9f9b184346/--whatever"; 

    $.ajax({ 
     type: "POST", 
     url: serviceUrl, 
     data: ajaxData, 
     headers: { 
      "Authorization": "Bearer --API KEY HERE--", 
      "Content-Type": "application/json;charset=utf-8" 
     } 
    }).done(function (data) { 
     console.log(data); 
    }); 
}); 

che ha restituito i dati. NOTA: assicurati di vedere questo avviso in Chrome. Non avevo il pugno, perché alcuni processi di Chrome erano ancora in esecuzione in background. Dopo aver ucciso quelli, riavviando con quella bandiera, vedendo il messaggio, ha funzionato. (Chrome v40.something)

See: https://stackoverflow.com/a/6083677/896697

+0

-1: L'OP ha chiesto in particolare "Non riesco a capire come disabilitare CORS per i servizi di Azure Machine Learning". Disabilitare la sicurezza del browser locale è (intrinsecamente) non sicuro e non una soluzione per un'applicazione di produzione che utilizzerebbe il servizio web pubblicato da Azure ML. – tatlar