У меня одна большая проблема с вызовом лазурной функции.Моя функция лазури отлично работает, когда аутентификация выключена.В SharePoint онлайн у меня есть этот код JS:
var serviceURL = "https://xxxxxxxxx.azurewebsites.net/api/Function1?name=test";
$.ajax({
url: serviceURL,
type: "POST",
dataType: 'JSON',
crossDomain: true,
success: function (data) {
alert("Success: " + data);
},
error: function (ex) {
alert("Failure getting user token");
}
});
Хорошо, так что это работаетНо когда я настраиваю Аутентификацию Active Directory в функции mu Azure и изменяю свой код следующим образом:
var serviceURL = "https://xxxxxxxxx.azurewebsites.net/api/Function1?name=test";
$.ajax({
url: serviceURL,
type: "POST",
dataType: 'JSON',
crossDomain: true,
headers: {
"Content-Type": "'application/json;odata=verbose'",
"Accept": "application/json;odata=verbose",
"crossDomain": "true",
"credentials": "include",
"Access-Control-Allow-credentials": "true"
},
xhrFields: {
withCredentials: true
},
success: function (data) {
alert("Success: " + data);
},
error: function (ex) {
alert("Failure getting user token");
}
});
Я получаю эту ошибку
SEC7122: [CORS] Источник 'https://xxxxxxxx.sharepoint.com' сделал запрос с использованием режима учетных данных «include» и не нашел заголовок ответа Access-Control-Allow-credentials со значением «true» для ресурса с несколькими источниками в «https://xxxxxxxx.azurewebsites.net/api/Function1?name=test'.
Моя функция лазури выглядит следующим образом
[FunctionName("Function1")]
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
// parse query parameter
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
if (name == null)
{
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
name = data?.name;
}
return name == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + ClaimsPrincipal.Current.Identity.Name);
}
Я разрешил в настройках CORS мой домен sharepoint, так что все в порядке ... Я все проверил, но ничего не помогло с этой проблемой ... То жепроблема ... В моей функции Azure я протестировал настройку экспресс-или расширенного режима управления для аутентификации AD, но ничего не помогло .... Спасибо за вашу помощь.