对外部URL的调用总是被CORS阻止的

时间:2020-03-25 作者:mhery

我创建了一个javascript function 每次有人点击button. 这是文件中存在的代码/wp-includes/js/utm.js:

function event_click() {
    document.getElementById("cf_submit-site-aa7bccxxxx").addEventListener("click", prepareData2DB);
    console.log("ready");
}

function prepareData2DB() {
        // prepare body to send request 
        visitant = ...;
        send2DB(visitant);
    }
}

function send2DB(visitant) {
    var xmlHttp = new XMLHttpRequest();

    xmlHttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            console.log(\'response:\' + this.response);
        }
    };

    xmlHttp.open("POST", "https://xyz.com.br/", true);
    xmlHttp.setRequestHeader(\'Content-type\', \'application/json\');
    xmlHttp.setRequestHeader(\'Access-Control-Allow-Origin\', \'*\');
    xmlHttp.setRequestHeader(\'Access-Control-Allow-Methods\', \'POST\');
    xmlHttp.setRequestHeader(\'Access-Control-Allow-Headers\', \'Content-Type\');
    xmlHttp.send(JSON.stringify(visitant));
}
这个file 在上导入footer.php:

<script type=\'text/javascript\' src="/wp-includes/js/utm.js"></script>
button 单击,然后function 触发了,我收到了error 在…上console:

访问位于\'https://xyz.com.br/\' 从原点\'https://wordpress-host.com.br\' 已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“access control Allow Origin”标头

我已经在上添加了此代码functions.php:

function add_cors_http_header(){
    header("Access-Control-Allow-Origin: *");
}
add_action(\'init\',\'add_cors_http_header\');
并使用两者https://corsproxy.github.io/https://cors-anywhere.herokuapp.com/ 通过xyz url,我得到:

网络::ERR\\u CONNECTION\\u CLOSED

最后,我用this 插件,但两者都不起作用。

我不知道我还能做些什么来传递这个错误。

1 个回复
最合适的回答,由SO网友:mhery 整理而成

我把cors header 在…上functions.php, 允许启用corsAPI, 确保https 在两侧,并允许cors 在…上digital ocean – 这两个主机wordpressAPI

相关推荐

从PHP获取数据到JavaScript以设置每个帖子在首页上的位置

我为我的Wordpress主题创建了一个名为project的自定义帖子类型,效果很好。每个项目都有几个自定义字段,包括一组x和y值,它们指示项目应显示在首页的位置(请参阅下面代码的样式部分:我知道它不起作用,但我正在显示我想要在伪代码中实现的目标)。我可以将x值显示为<?php the_field(\'x\'); ?> 和<?php the_field(\'y\'); ?>, 如WordPress的高级自定义字段文档所定义。但是,如何从PHP到JavaScript获取x和y值,以便