sails.js ошибка при загрузке большого файла с включенным csrf

Я использую sails.js бета 0.10

Загрузка файлов работает нормально для маленьких файлов, но для больших файлов это выдает эту ошибку:

error: Server Error:
error: TypeError: Object #<ServerResponse> has no method 'view'
    at Object.forbidden (/home/mandeep/iqr/esurvey/api/responses/forbidden.js:81:19)
    at ServerResponse.bound [as forbidden] (/home/mandeep/iqr/esurvey/node_modules/lodash/dist/lodash.js:729:21)
    at /home/mandeep/iqr/esurvey/node_modules/sails/lib/hooks/csrf/index.js:65:28
    at createToken (/home/mandeep/iqr/esurvey/node_modules/sails/node_modules/express/node_modules/connect/lib/middleware/csrf.js:82:44)
    at /home/mandeep/iqr/esurvey/node_modules/sails/node_modules/express/node_modules/connect/lib/middleware/csrf.js:48:24
    at routes.before./* (/home/mandeep/iqr/esurvey/node_modules/sails/lib/hooks/csrf/index.js:62:34)
    at routeTargetFnWrapper (/home/mandeep/iqr/esurvey/node_modules/sails/lib/router/bind.js:176:5)
    at callbacks (/home/mandeep/iqr/esurvey/node_modules/sails/node_modules/express/lib/router/index.js:164:37)
    at param (/home/mandeep/iqr/esurvey/node_modules/sails/node_modules/express/lib/router/index.js:138:11)
    at pass (/home/mandeep/iqr/esurvey/node_modules/sails/node_modules/express/lib/router/index.js:145:5) [TypeError: Object #<ServerResponse> has no method 'view']

Однако это работает отлично, если я отключить csrf. Любая идея?

2 ответа

Решение

Это может быть проблема времени, когда _csrf поле не анализируется достаточно быстро, если загруженный файл очень большой. Возможный обходной путь - отправить токен CSRF в заголовке вместо использования параметра запроса. Вы можете сделать это, установив X-CSRF-Token заголовок в вашем запросе к значению токена CSRF.

Другой подход - переместить скрытое поле csrf в форму над входом файла. Затем он будет сначала проанализирован сервером.

Другие вопросы по тегам