Jhipster 4 angular 4 ng2-file-upload ошибка возврата 403 доступ запрещен из-за CSRF

ng2-file-upload не отправляет токены доступа CSRF вместе с запросом на загрузку, поэтому я получаю доступ 403, и мой запрос на загрузку просто отклоняется сразу.

2 ответа

Решение

Если ваш токен меняется чаще, вы также можете установить его для каждого запроса. В приведенном ниже примере токен CSRF взят из файла cookie. Это можно сделать в конструкторе вашего компонента.

this.uploader = new FileUploader({ url: URL });
this.uploader.onBeforeUploadItem = (fileItem) => {
    fileItem.headers.push({name: 'X-XSRF-TOKEN', value: cookieService.getCookie('XSRF-TOKEN')});
    return fileItem;
};

В jhipster angular 4 каждый нормальный http-запрос имеет X-XSRF-TOKEN в заголовке, но сторонняя библиотека ng2-file-upload не использует http-сервис внутренне, я думаю. поэтому, когда вы создаете объект FileUploader в конструкторе ваших компонентов, вы должны создать его экземпляр следующим образом:

this.uploader = new FileUploader({url: URL, headers: [{name: 'X-XSRF-TOKEN', value: csrfService.getCSRF()}]});

в котором csrfService является экземпляром SCSRFService, который находится в ваших проектах SharedServices и может быть внедрен в ваш компонент.

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