web-dev-qa-db-fra.com

Codeigniter faisant écho [:: 1] au lieu de localhost

J'utilise CodeIgniter 3 comme plate-forme Web et j'essaie d'importer du CSS d'interface utilisateur sémantique dans ma page. Je le fais en utilisant la méthode base_url() de CodeIgniter dans la propriété href pour l'importation CSS.

Cependant, semantic.css lui-même importe certaines autres polices présentes sur mon serveur, qui ne peuvent alors pas se charger en raison de la politique de partage des ressources d'origine croisée. Voici le message d'erreur chrome me donne:

Police d'origine 'http://[::1] 'a été bloqué lors du chargement par la stratégie de partage des ressources d'origine croisée: aucun en-tête' Access-Control-Allow-Origin 'n'est présent sur la ressource demandée. L'origine ' http: // localhost ' n'est donc pas autorisée à accéder.

C'est parce que base_url () fait écho au domaine qui est [::1] et non localhost comme je l'ai tapé dans le navigateur.

Pour une raison quelconque, il me semble que chrome (et aussi Edge) ne considère pas [::1] et localhost comme le même hôte, ou peut-être que je suis juste stupide. Ce que je sais cependant, c'est que si je change le chemin d'accès du fichier semantic.css principal et du code dur localhost, cela fonctionne, et cela fonctionne également si, au lieu de demander ma page à l'aide de localhost, j'utilise [::1]

J'ai fait d'autres projets très similaires à ça et je n'ai jamais eu ça "[::1]" apparaît. Qu'est-ce qui fait que php fait écho à un tel chemin?

13
Dalannar

C'est à cause de votre base_url est vide.

Dans config/config.php

$config['base_url'] = 'http://localhost/project_name';
37
Abdulla Nilam

Manière plus précise et dynamique

$root = "http://".$_SERVER['HTTP_Host'];
$root .= dirname($_SERVER['SCRIPT_NAME']);
$config['base_url'] = $root;

Bien que vous puissiez toujours utiliser le port.

7
raakiiib

Vous devez modifier votre $ config ['base_url'] comme suit,

$config['base_url'] = '';
$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http");
$config['base_url'] .= "://" . $_SERVER['HTTP_Host'];
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), "", $_SERVER['SCRIPT_NAME']);

Emplacement du fichier: codeigniter/application/config/config.php
Utilisez le code ci-dessus pour obtenir une URL dynamique.

6
Sugan Krishna

Afin d'utiliser base_url (); vous devez d'abord charger l'URL Helper. Cela peut être fait dans application/config/autoload.php (sur ou autour de la ligne 67): ou vous pouvez utiliser manuellement

$this->load->helper('url');

que définir le

$config['base_url'] = 'http://localhost/your_site_url';

je pense que cela vous aidera

3
Muhammad Talha

C'est ce que vous devez modifier dans config/config.php, cela fonctionne correctement dans "localhost" ainsi que dans votre "serveur":

$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';

}
1
Kartik Bhat