Я использую CodeIgniter 3 как веб-платформу и пытаюсь импортировать семантико-UI CSS на свою страницу. Я делаю это, используя метод base_url()
CodeIgniter в base_url()
href для импорта CSS.
Тем не менее, semantic.css сам импортирует некоторые другие шрифты, присутствующие на моем сервере, которые затем не могут загружаться из-за политики совместного использования ресурсов Cross-Origin. Это сообщение об ошибке хром дает мне:
Шрифт из источника « http://[::1]
» был заблокирован от загрузки по политике совместного использования ресурсов Cross-Origin: заголовок «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе. Происхождение ' http: // localhost ', следовательно, не допускается.
Это связано с тем, что base_url () перекликается с доменом [::1]
а не с localhost, как я набрал в браузере.
По какой-то причине мне кажется, что хром (а также Edge) не рассматривает [::1]
и localhost как один и тот же хост, или, может быть, я просто тупой. Однако я знаю, что если я изменю путь к основному файлу semantic.css и локальному хосту жесткого кода, он работает, и он также работает, если вместо запроса моей страницы с использованием localhost я использую [::1]
Я сделал другие проекты, очень похожие на это, и никогда не появлялся этот "[::1]"
. Что именно вызывает php для эха такого пути?
Его из-за вашего base_url
пуст.
В config / config.php
$config['base_url'] = 'http://localhost/project_name';
Чтобы использовать base_url (); вы должны сначала загрузить URL-адрес. Это можно сделать либо в application / config / autoload.php (на линии 67 или около нее): или вы можете вручную использовать
$this->load->helper('url');
чем установить
$config['base_url'] = 'http://localhost/your_site_url';
я думаю, это поможет вам
Более точный и динамичный способ
$root = "http://".$_SERVER['HTTP_HOST']; $root .= dirname($_SERVER['SCRIPT_NAME']); $config['base_url'] = $root;
Хотя вы все еще можете использовать порт.
Это то, что вам нужно изменить в config / config.php, оно работает правильно в «localhost», а также на вашем «сервере»:
$config['base_url'] = "http://".$_SERVER['SERVER_NAME']; $config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']),"",$_SERVER['SCRIPT_NAME']); if(!defined('DOCUMENT_ROOT')) define('DOCUMENT_ROOT',str_replace('application/config','',substr(__FILE__, 0, strrpos(__FILE__, '/')))); $config['base_path'] = constant("DOCUMENT_ROOT"); $config['js_url'] = $config['base_url'].'js/'; $config['css_url'] = $config['base_url'].'css/'; $config['image_url'] = $config['base_url'].'img/'; // Host resolution for cross origin requests if(ENVIRONMENT == 'production') { $config['host'] = 'www.<domain_name>.com'; } else { $config['host'] = 'localhost'; }