Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解决此XMLHttpRequest:无访问控制允许来源,_Javascript_Php_Xmlhttprequest - Fatal编程技术网

Javascript 如何解决此XMLHttpRequest:无访问控制允许来源,

Javascript 如何解决此XMLHttpRequest:无访问控制允许来源,,javascript,php,xmlhttprequest,Javascript,Php,Xmlhttprequest,我有几个客户雇佣我来托管和维护他们的网站。为了方便我的工作,我正在添加一个js,当他们不付钱给我时,它会关闭他们的网站。现在我用ftp手动操作 *按css y将所有div放入display none 这是页面上的js: $(document).ready(function() { getOutput(); }); function getOutput() { getRequest( 'http://www.mypage.com/test.php', drawOutput

我有几个客户雇佣我来托管和维护他们的网站。为了方便我的工作,我正在添加一个js,当他们不付钱给我时,它会关闭他们的网站。现在我用ftp手动操作

*按css y将所有div放入display none

这是页面上的js:

$(document).ready(function() {
    getOutput();
});

function getOutput() {
  getRequest(
  'http://www.mypage.com/test.php', 
   drawOutput  
);
return false;
}  

function drawOutput(responseText) {

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = responseText;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(script, s);

}
function getRequest(url, success) {
var req = false;
try{
    req = new XMLHttpRequest();
} catch (e){
    try{
        req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try{
            req = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e){
            return false;
        }
    }
}
if (!req) return false;
if (typeof success != 'function') success = function () {};
if (typeof error!= 'function') error = function () {};
req.onreadystatechange = function(){
    if(req .readyState == 4){
        return req.status === 200 ? 
            success(req.responseText) : error(req.status)
        ;
    }
}
req.open("GET", url, true);
req.send(null);
return req;
}
这是php:

$array = array(
    "test"  => "up",
    "test2"     => "down",
    "test3" => "down",
);

if(isset($_SERVER['HTTP_REFERER'])) {

    $sitio = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST); //i get the url

    $verifico = explode(".", $sitio); // divide the url

    if ($verifico[0] == "www"){ //i check if it has www or not
        $sitio = $verifico[1];
    }
    else {
        $sitio = $verifico[0];
    }
}

if ($array[$sitio] == "down"){
    echo 'my.js';
}
这是php请求后打印的js代码:

$(document).ready(function() {
var jodita = '<style type="text/css">body,div{display:none!important;}</style>'; 
document.getElementsByTagName('head')[0].innerHTML = jodita;
});
这就是它的工作原理,js向php发出请求。php获取url并验证站点是否必须打开或关闭,然后根据结果返回js的url。我这样做是因为将来我可以在不接触所有站点的情况下更改第二个js

当我在同一个域中使用它时,这很好,但当我使用不同的域时,会出现以下错误:

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许“源”访问


我尝试过一些解决方案,比如CORS,但这很困难,我不明白。还有另一个选项?

如错误消息所述,您需要将Access Control Allow Origin头添加到PHP脚本中:

//Allow Ajax requests from any domain
header("Access-Control-Allow-Origin: *");