Политика Docxtemplater CORS на веб-сервере

#javascript #web #docxtemplater

Вопрос:

Я пытаюсь создать небольшой веб-сайт, где мне нужно использовать Docxtemplater. (https://docxtemplater.com/)

Это модуль узла, используемый для редактирования документов word (.docx). В документах (https://docxtemplater.com/docs/generate/), указано: «Пожалуйста, обратите внимание, что если вы хотите загрузить docx из своей файловой системы, вам понадобится веб-сервер, иначе вы будете заблокированы политикой CORS».

Я попытался загрузить свой веб-сайт на хост (https://www.000webhost.com/), но я получаю ошибку:

mathiastester.000webhostapp.com/:1 Доступ к XMLHttpRequest по адресу ‘https://docxtemplater.com/tag-example.docx» от происхождения «https://mathiastester.000webhostapp.com» заблокирован политикой CORS: на запрошенном ресурсе отсутствует заголовок «Управление доступом-Разрешить-Происхождение».

У кого-нибудь есть хоть какое-то представление о том, что происходит…?

Вот веб-сайт: https://mathiastester.000webhostapp.com/

Заранее спасибо.

Комментарии:

1. Просто чтобы вернуться к вам, я создатель docxtemplater. Я только что исправил проблему, т. Е. Код, который вы скопировали из документов, должен работать сейчас, даже при использовании моего сервера. Это было то, что было задумано, но я думаю, что сломал это несколько недель назад, не заметив.

2. О, круто! Я каким-то образом также заставил его работать 15-го числа, я не знаю, как. Спасибо за вклад!

Ответ №1:

Как и в примере, приведенном в приведенной вами ссылке, ваш AJAX-код должен сделать запрос к некоторому коду на стороне сервера, запущенному на вашем веб-сервере, который затем отправляет запрос в docxtemplater, поскольку docxtemplater не разрешает перекрестные запросы («CORS») к нему.

Проще говоря, запрос CORS-это запрос AJAX, в котором запрос отправляется в другой «источник» (комбинация домена, порта и протокола), чем тот, из которого он выполняется. Они запрещены браузерами по умолчанию по соображениям безопасности, но удаленный сервер может, если пожелает, возвращать заголовки ответов, указывающие браузеру, что запрос действительно может быть разрешен. docxtemplater этого не делает, и в документации, которую вы цитировали, говорится, что вам не следует отправлять запрос CORS на их серверы. Однако, судя по сообщению об ошибке, которое вы нам показали, вы сделали именно это в своем коде.

Видишь https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS для получения дополнительной информации о том, что такое CORS.

Комментарии:

1. Спасибо за помощь! Я постараюсь немного почитать об этом! Но tbh понятия не имеет, что это значит, я просто хочу отредактировать свой word docx через js…..

2. Ну, вы можете «просто» захотеть это сделать, но вы просто не можете вызвать docxtemplater напрямую из JS — они этого не позволяют (вероятно, по соображениям безопасности). Итак, как объясняется в моем ответе, вам нужно сделать так, чтобы ваш JS вызывал ваш сервер, а затем ваш сервер вызывал docxtemplater.

3. Извините за мое замешательство, но как именно я должен позвонить на свой сервер и вернуть необходимую информацию? Я не очень хорошо знаком со всем этим обращением к серверу. Заранее спасибо.

4. Вы просто отправляете HTTP-запрос AJAX на свой сервер вместо прямого обращения к docxtemplater. Затем у вас есть код на вашем сервере, который делает HTTP-запрос в docxtemplater, получает результаты и выводит их обратно в ваш JS (в качестве ответа на вызов AJAX).

5. Хорошо, спасибо за это! Я постараюсь с этим поработать.