Я создаю простой REST API на основе Laravel (он обслуживается через сервер Ubuntu на основе Apache), который используется веб-приложением Angular 6 через его модуль HttpClient.
Он работал правильно на моем локальном хосте, пока язагрузил его на хостинг Firebase (который включает https).Поэтому мне пришлось внедрить коммерческий SSL-сертификат на моем сервере, он прекрасно работал, обслуживая POST-запросы через POSTMAN или GET-запросы через Google Chrome, но когда я пытаюсь вызвать его из моего веб-приложения, он показывает эту ошибку:
Мой код клиента действительно прост:
generateReport(data) {
const headers = new HttpHeaders({"Content-Type":"application/json"});
return this.httpClient.post(this.env.apiURL+'excel/show/',
data,
{headers:headers});
}
И это моя конфигурация виртуального хоста:
<VirtualHost *:443>
ServerName eduardoibarra.com
ServerAlias www.eduardoibarra.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /root/www_eduardoibarra_com.crt
SSLCertificateKeyFile /root/server.key
SSLCertificateChainFile /root/COMODORSADomainValidationSecureServerCA.crt
<Directory /var/www/html>
Order Allow,Deny
Options FollowSymLinks
Allow from all
AllowOverride All
RewriteEngine On
</Directory>
</VirtualHost>
Таким образом, подводя итог,
Http-сервер + локальная среда клиента = работает правильно
Https-сервер + POSTMAN ИЛИ Chrome = работает правильно
Https-сервер + клиентская среда https = выдает 301 ошибку выше
* Примечание: я также включил CORS на Laravel через библиотеку cors Барри, прямо в public /Файл index.php с использованием заголовков и конфигурации виртуального хоста с одинаковыми результатами.