2017-04-05 56 views
0

尝试使用Azure的Node.js SDK时,我目前遇到403错误。下面的功能完美的作品时,我直接把它叫做:Node.js Azure文件服务 - 403错误调试

module.exports = function (file, callback) { 
    if (!fs.existsSync('./data')) { 
    mkdirp('./data', function (err) { 
     if (err) console.log(err) 
    }) 
    } 
    fileService.getFileToStream('chatbot', '', file, fs.createWriteStream('data/' + file), function (err, res, response) { 
    if (!err) { 
     fs.readFile('data/' + file, 'utf8', function (err, data) { 
     if (!err) { 
      callback(null, data) 
     } else { 
      callback(err) 
     } 
     }) 
    } else { 
     callback(err) 
    } 
    }) 
} 

然而,当我把这个从我的更广泛的应用,然后我收到一个403错误:

{ StorageError: Forbidden 
    at Function.StorageServiceClient._normalizeError (/Users/tombarton/Sites/TestApplication/node_modules/azure-storage/lib/common/services/storageserviceclient.js:1174:23) 
    at FileService.StorageServiceClient._processResponse (/Users/tombarton/Sites/TestApplication/node_modules/azure-storage/lib/common/services/storageserviceclient.js:729:50) 
    at Request.processResponseCallback [as _callback] (/Users/tombarton/Sites/TestApplication/node_modules/azure-storage/lib/common/services/storageserviceclient.js:310:37) 
    at Request.self.callback (/Users/tombarton/Sites/TestApplication/node_modules/azure-storage/node_modules/request/request.js:187:22) 
    at emitTwo (events.js:106:13) 
    at Request.emit (events.js:191:7) 
    at Request.<anonymous> (/Users/tombarton/Sites/TestApplication/node_modules/azure-storage/node_modules/request/request.js:1044:10) 
    at emitOne (events.js:96:13) 
    at Request.emit (events.js:188:7) 
    at IncomingMessage.<anonymous> (/Users/tombarton/Sites/TestApplication/node_modules/azure-storage/node_modules/request/request.js:965:12) 
    name: 'StorageError', 
    message: 'Forbidden', 
    code: 'Forbidden', 
    statusCode: 403, 
    requestId: '51ce6605-001a-00c1-1d52-ae966b000000' } 

的问题是,我不能似乎调试这个比403错误更进一步。由于代码完全独立工作,我知道访问密钥不是问题。 Azure存储允许您记录表,Blob和队列的访问数据,但不能用于文件服务,这似乎令人难以置信(https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/enabling-storage-logging-and-accessing-log-data#HowtoenableStorageLoggingusingtheWindowsAzureManagementPortal)。

有没有人有关于如何进一步调试的想法?

回答

1

有一个issue in the ApplicationInsights package导致403存储响应。此问题已在0.18.0版中修复。

+0

谢谢!我在ApplicationInsights上的最新版本(0.19),但是当我评论了与ApplicationInsights有关的所有内容时,该应用程序运行良好。我会看看,并可能会在ApplicationInsights回购中引发问题。 – tombraider

2

您可以在中间放置一个调试代理,如mitmproxyFiddlerCharles以查看请求和响应之间的差异。

NODE_TLS_REJECT_UNAUTHORIZED=0 HTTP_PROXY=http://127.0.0.1:8888 node app.js