我有一个React应用,它调用了Wordpress v5 API。
const api = `${WAPI}`;
const headers = {
'Content-Type': 'application/json'
} ;
fetch(api, {
headers: headers
})
.then(function(data){
console.log(data);
})
.then(this.handleposts)
.catch(err => console.log(err));
}
哪个会在我的开发工具的控制台中返回此错误:
Access to fetch at 'http://XXX.XXX.XXX.XX/firstcivdivcareers/wp-json/wp/v2/posts/' from origin 'http://localhost:9000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
我曾经调用过一个Wordpress网站API,但现在不起作用。我假设Wordpress API可以与跨域域调用一起使用,以用作第三方服务。
我对主题的functions.php
添加了更改。当我在浏览器中转到网站并在开发工具控制台中检查标题时。我可以看到我发送的响应带有正确的标题。但是,当我通过JS的fetch调用进行调用时,效果不一样。
更改已添加到functions.php
:
/**
* Only allow GET requests
*/
function add_cors_http_header(){
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET");
header("Access-Control-Allow-Headers: origin");
}
答案 0 :(得分:1)
在提供API的wordpress代码中找到文件。
您只需在该文件的开头添加
<? header("Access-Control-Allow-Origin: *"); ?>
编辑:
更好的选择是使用过滤器,而不是编辑核心文件,如this线程中所述。您可以将以下代码放入functions.php
add_filter('init', 'add_cors_header');
function add_cors_header() {
header(...);
}
答案 1 :(得分:-1)
我的Vue.js代码也遇到了这个问题。这是我添加到GET请求中的内容,没有其他问题:https://cors-anywhere.herokuapp.com
,它紧接在URL之前:
let url ='https://cors-anywhere.herokuapp.com/https://jobs.github.com/positions.json?&markdown=true&page=1';
希望对您有帮助!
答案 2 :(得分:-2)