Codeigniter CORS策略:没有“访问控制-允许-来源”错误如何解决?

p8h8hvxi  于 2022-12-07  发布在  其他
关注(0)|答案(9)|浏览(170)

错误:CORS策略已阻止从源“http://example.com "访问”http://www.example.com//assets/global/plugins/font-awesome/fonts/fontawesome-webfont.woff2?v=4.4.0"处的字体:请求的资源上不存在“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?

ulmd4ohb

ulmd4ohb1#

尝试允许GET & 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 *;
}
cvxl0en2

cvxl0en22#

允许跨站点脚本可能会导致安全问题,请尝试调整您的codeigniter选项;
1.转到application/config/config.php文件,
1.查找$config['base_url'] = "";
1.将项目文件夹路径作为值放置。

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

mfpqipee3#

我们只想在域名前面加上'www'。

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

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

更改为

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

n3ipq98p4#

Codeigniter是一个很酷的PHP操作框架,对于CORS,您不需要启用它,因为它具有安全性含义,只需执行以下操作即可
1.打开config.php
1.查找$config['base_url'] = "";
1.将其更改为$config['base_url']="http://localhost/youproject/";
保存并重新加载您的应用程序。您可以开始了

jucafojl

jucafojl5#

如果仍然不起作用,请在.htaccess文件中添加“Allow from all”。

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

e5nszbig6#

在Codeigniter __构造中使用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
            }
vaqhlq81

vaqhlq817#

直接添加到你的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
ntjbwcob

ntjbwcob8#

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

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

在网络的每一个地方,Maven只是提示到这个标题的小而常见的列表。如果你是自定义的标题为一些原因,如授权,你需要使用这样的扩展列表。使用与你使用的选项相关的标题

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

xv8emn3q9#

对于我的情况,它在控制台中抛出了同样的问题。我在文件级和服务器级添加了header。它仍然抛出同样的错误。然后我联系了相应的供应商。他们在他们的允许列表中添加了该域。之后,它开始工作。它在控制台中没有抛出任何错误。
所以这可能是问题之一。这可能会帮助其他人。谢谢。

相关问题