Я пытаюсь сделать REST-вызов на моей Azure Table с помощью javascript, но мне трудно аутентифицировать вызов.Azure Table Storage Authenticate REST вызов через javascript
Я использую этот кусок JavaScript (я знаю, что дата должна быть не более 15 мин назад, и я не планирую использовать действующий ключ в JavaScript!)
$(document).ready(function(){
$("button").click(function(){
var dateTimeInUtc = 'Fri, 12 Feb 2016 12:14:00 GMT';
var version = '2015-04-05';
var key = 'JEwMjqFD1ng8vIaECmRw8eQysiIvH08nF/jPKPYaNGumgxtKIjltX8bte5sKN6SNyw09s=='; // not an actuall key
var stringToSign = 'GET\n\n\nFri, 12 Feb 2016 12:14:00 GMT\n/myaccount/mytable(PartitionKey=\'first_partition\', RowKey=\'1235\')';
var signature = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(CryptoJS.enc.Utf8.parse(stringToSign), CryptoJS.enc.Base64.parse(key)));
$.ajax({
url:'https://myaccount.table.core.windows.net/mytable(PartitionKey=\'first_partition\', RowKey=\'1235\')',
type: 'GET',
success: function (data) {
console.log('well done');
},
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', "SharedKey " + "myaccount" + ":" + signature);
xhr.setRequestHeader('x-ms-date', dateTimeInUtc);
xhr.setRequestHeader('x-ms-version', version);
},
error: function (rcvData) {
console.log(rcvData);
}
});
});
});
что я получаю
403 (Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.)
Вы видите что-то явно неправильное? Я что-то пропустил от подписи?
Мне любопытно узнать, правильно ли установлен CORS? –
Я установил его через http://www.cloudportam.com/ в конце концов, потому что python sdk не предлагает эту функциональность [пока] (http://stackoverflow.com/questions/35342136/how-to-set-the -properties-оф-ан-лазурь стол-через-питон-SDK). Для пропущения части конфигурации на данный момент я просто добавил правило дополнительного корса, похожее на значение по умолчанию, которое использует cloudportam, и я добавил свое происхождение. Таким образом, все действия разрешены, разрешены и выставлены заголовки установлены на * и максимальный возраст 500. – LetsPlayYahtzee
Ответы об ошибке могут включать в себя тело, которое сообщит вам строку в знак, что служба ожидает. Вы можете использовать это для отладки строки в знак. Кроме того, взгляните на реализацию библиотеки .NET: https://github.com/Azure/azure-storage-net/blob/master/Lib/ClassLibraryCommon/Core/Auth/SharedKeyTableCanonicalizer.cs#L72 –