Codeigniter CORS政策:No' Access-Control-Allow-Origin'错误如何解决?

时间:2017-01-12 10:16:20

标签: php codeigniter

错误: 在' http://www.example.com//assets/global/plugins/font-awesome/fonts/fontawesome-webfont.woff2?v=4.4.0'访问字体来自原产地' http://example.com'被CORS政策阻止:No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://example.com'因此不允许访问。

解决方案:

<?php
header('Access-Control-Allow-Origin: *');

class Home extends CI_Controller {
    public function index()
    {
        $this->load->view('master');
    }
}
?>

我试过这个解决方案,但它不起作用,请你帮帮我怎么解决?以及如何从URL中删除index.php?

8 个答案:

答案 0 :(得分:11)

允许跨站点脚本编写可能会导致安全问题,请尝试调整codeigniter选项;

  1. 转到application/config/config.php文件,
  2. 找到$config['base_url'] = "";
  3. 将项目文件夹的路径设置为值。

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

答案 1 :(得分:7)

尝试允许GET&amp; OPTIONS

<?php
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: GET, OPTIONS");

如果上述方法不起作用,请尝试允许通过.htaccess(对于apache)或在nginx服务器块中访问字体资源 - 添加以下行:

# Apache config
<FilesMatch ".(eot|ttf|otf|woff)">
    Header set Access-Control-Allow-Origin "*"
</FilesMatch>

# nginx config
if ($filename ~* ^.*?\.(eot)|(ttf)|(woff)$){
    add_header Access-Control-Allow-Origin *;
}

答案 2 :(得分:2)

Codeigniter是一个很酷的操作PHP的框架,对于CORS,您无需启用它,因为它具有安全性,只需执行以下操作

  1. 打开config.php
  2. 寻找$config['base_url'] = "";
  3. 将其更改为$config['base_url']="http://localhost/youproject/";

保存并重新加载您的应用程序。 你该走了

答案 3 :(得分:1)

我们想添加&#39; www&#39;域名前面。

转到application / config / config.php文件,

git

更改为

 $config['base_url']="http://yourdoamin.com";

答案 4 :(得分:1)

将其直接添加到您的php控制器文件中:

Header('Access-Control-Allow-Origin: *'); //for allow any domain, insecure
Header('Access-Control-Allow-Headers: *'); //for allow any headers, insecure
Header('Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE'); //method allowed

答案 5 :(得分:0)

.htaccess文件中添加“ 全部允许”,如果仍然无法运行。

<FilesMatch ".(ttf|otf|eot|woff|woff2)$">
  <IfModule mod_headers.c>
    Allow from all
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>

答案 6 :(得分:0)

根据我的经验,这些答案都对我不可用,重要项目遗漏了。使用“ *”是不安全的。

header("Access-Control-Allow-Headers: Origin,X-Requested-With");

在Web上的每个地方,专家都只提示此标头的很少和常见的列表。 如果出于某些原因(例如授权)自定义标头,则需要使用此类扩展列表。使用与您使用的选项相关的标题

header("Access-Control-Allow-Headers: Origin,X-Requested-With,Content-Type,Accept,Access-Control-Request-Method,Authorization,Cache-Control")

答案 7 :(得分:0)

在 Codeigniter __construct 中使用 header() 函数

    public function __construct()
            {
                parent::__construct();
                $this->load->model('api_model');
                $this->load->library('form_validation');
        
                Header('Access-Control-Allow-Origin: *'); //for allow any domain, insecure
                Header('Access-Control-Allow-Headers: *'); //for allow any headers, insecure
                Header('Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE'); //method allowed

//Or

        header('Access-Control-Allow-Origin: website_url');
        header("Content-Type: application/json; charset=UTF-8");
        Header('Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE'); //method allowed
            }