我有两台服务器。 首先是WP,我将其用作无头CMS-后端 第二个是Nuxt.js SPA应用-前端。 我想通过OAuth服务器向后端添加auhtentication。我正在使用名为“ WP OAuth服务器”的WP插件。现在,我已经挠了两天,但仍然没有任何积极的结果。 问题在于通过axios向后端发送请求。无论我如何尝试,CORS都会阻止一切。
我将其添加到主题functions.php
function wo_cors_check_and_response(){
if ($_SERVER['REQUEST_METHOD'] == "OPTIONS") {
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET');
header('Access-Control-Allow-Headers: Access-Control-Allow-Origin, Origin, X-Requested-With, Content-Type, Accept, Authorization');
header('Access-Control-Max-Age: 1'); //1728000
header("Content-Length: 0");
header("Content-Type: text/plain charset=UTF-8");
exit(0);
}
}
add_action('wo_before_api', 'wo_cors_check_and_response');
当我发出此请求时:
async fetch({ store, app }) {
await app.$axios.get('oauth/authorize/', {
params: {
client_id: 'CLIENT_ID',
response_type: 'code'
}
})
.catch((err) => {
console.error(err)
})
}
我得到302状态和CORS错误:https://imgur.com/r74mI45 在网络中,我看到红色的重定向请求已被取消:https://imgur.com/fxkHOuh 当我使用'Access-Control-Allow-Origin':'*'添加到axios请求标头对象时,唯一的区别是,现在我看到状态为200的预检OPTIONS请求:https://imgur.com/WuoU8kD 我也尝试过:
async fetch({ store, app }) {
await app.$axios.get('oauth/authorize/', {
params: {
client_id: 'CLIENT_ID',
response_type: 'code'
},
withCredentials: true,
credentials: 'same-origin'
})
.catch((err) => {
console.error(err)
})
}
我无法理解此请求的结果。我再次收到CORS错误,但是由于某种原因,我得到了授权码。甚至此请求也被取消:https://imgur.com/PzrVHgl 我没有看到OPTIONS请求,只有302状态可以通过数据/ oauth / authorize,而且我相信它是通过授权码回调给我的。但是它已被取消,控制台中显示CORS错误。我想也许现在我的前端正在阻止回调。我只是在学习,现在我的头脑很白痴。你有什么想法吗?