jQuery.get()只在某些资源上使用Access-Control-Allow-Origin错误

时间:2016-03-31 14:05:38

标签: javascript php jquery svg

有点奇怪!我正在尝试将SVG代码导入我们的网站,由第三方托管,从我们的内部服务器提取XML的PHP​​脚本。所以基本上所有的调用都转到同一个文件,但是使用不同的查询参数来加载SVG。

所以,几乎是随机的,有时我会得到这个......

No 'Access-Control-Allow-Origin' header is present on the requested resource.

...关于一部分电话(有时没有,有时几个,但很少都是)。甚至在页面刷新之间。所以我只是想知道为什么它不仅仅是一揽子工作还是不工作。

以下是PHP文件中的代码:

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

$svg = $_GET['svg'];
$file = "/path/to/images/social/$svg";

if(file_exists($file)){
    $svg = file_get_contents($file);
    $svg = preg_match('/(<svg.*<\/svg>)/is',$svg,$matches);
    echo $matches[0];
} else {
    echo "0";   
}

和JS:

$('.footer-social a').each(function(){
    var el = $(this);
    var f = '//js.example.com/svg.php?svg='+$.trim(el.attr("class"))+'.svg';
    $.get(f, function (data) {
    if(data!="0"){
        el.html(data);
    } else {
        console.log(f + " not found");
    }
    });

});

1 个答案:

答案 0 :(得分:0)

所有排序 - 结果是由于 mod_evasive 有点过于刺耳。现在优化了配置文件中的变量,它运行正常。

这也解决了我们在 OpenCart 和AJAX结帐时遇到的问题,如果有人偶然发现这个问题。