【发布时间】:2019-12-28 08:57:04
【问题描述】:
我正在使用 Angular 6 和 Ionic 4 以及 Wordpress 5.2 和 JWT 身份验证来访问 wp-json 中的 API。我确定根据 JWT Authentication 以及 Theme 函数中的自定义 CORS 标头启用 CORS,但我仍然收到错误
访问 XMLHttpRequest 在 'https://oc.xxxx.com/wp-json/erp/v1/crm/contacts' 来自 来源“http://localhost:8100”已被 CORS 策略阻止: 请求头字段 access-control-allow-origin 不允许 预检响应中的 Access-Control-Allow-Headers。
我的主题函数中自定义的CORS头如下,
function my_customize_rest_cors() {
remove_filter( 'rest_pre_serve_request', 'rest_send_cors_headers' );
add_filter( 'rest_pre_serve_request', function( $value ) {
header( 'Access-Control-Allow-Origin: *' );
header( 'Access-Control-Allow-Methods: GET' );
header( 'Access-Control-Allow-Credentials: true' );
header( 'Access-Control-Expose-Headers: Link', false );
return $value;
} );
}
add_action( 'rest_api_init', 'my_customize_rest_cors', 15 );
在我的Ionic应用上,调用API内容的代码如下,
getContact() {
var service = this;
let url = service.appConfig.Shop_URL + "/wp-json/erp/v1/crm/contacts";
url = this.initUrl(url, '');
var headers = new Headers();
headers.append('Authorization', 'Bearer ' + service.userService.token);
headers.append('Access-Control-Allow-Origin', '*');
return new Promise(function (resolve, reject) {
service.http.get(url, { headers: headers }).pipe(map(res => res.json())).subscribe(data => {
if (data) {
service.cachedData = data;
resolve(service.cachedData);
}
else {
reject();
}
});
});
}
我错过了什么导致 CORS 阻塞?提前致谢。
【问题讨论】:
-
你找到答案了吗,我遇到了完全相同的问题,提前谢谢
-
@TahaAmineZeghbib 是的。在 sn-p 中添加了答案。检查一下。
标签: angular ionic-framework jwt ionic4 wordpress-rest-api