WordPress API를 쿼리 할 때 원본 헤더를 캐싱한다고 생각되는 문제가 있습니다. 그러나 나는 무슨 일이 일어나고 있는지, 어떻게 해결할 수 있는지 정확히 고민하고있다.액세스 제어 허용 - 원본 및 캐싱 이해
첫째 - 여기서 무슨 일이 일어나고있는 작업은 다음과 같습니다
내가 아약스를 통해 WP API 메뉴 플러그인에 의해 추가 된 워드 프레스 API와 특히 엔드 포인트를 조회하는 허브 스팟 (HubSpot) 페이지가 - 나는 다음 메뉴를 만들도록하여 워드 프레스 업데이트 할 때 클라이언트 (또는 마케팅 팀 중 하나) - 메뉴가 HubSpot 페이지에서도 업데이트됩니다.
허브 스팟 (HubSpot) 페이지는 워드 프레스 사이트의 하위 도메인에 있고, 처음에 워드 프레스 사이트는 Access-Control-Allow-Origin은 단지 하위 도메인의 URL을 명시 적으로 설정하여 추가 헤더를 가지고 있었다.
HubSpot에서 편집 화면을 탐색하면 기본 메뉴가로드되지 않지만 두 번째 호출 (다른 메뉴에 대한)이 성공합니다. 다음 메인 메뉴 오류 :
'액세스 제어를 허용-출처'헤더 제공된 원점 같지 않은 값 'http://subdomain.example.com'를 갖는다. 따라서 'https://preview.hs-sites.com'은 액세스가 허용되지 않습니다.
http://subdomain.example.com은 실제 페이지의 URL입니다. 이상하게도 미리보기 페이지의 실제 URL은 https://preview.hs-sites.com이 아니지만 아마 미리보기가 iframe에서로드되기 때문일 수 있습니다.
이제 실제 URL로 이동하면 동일한 문제가 발생합니다. 첫 번째 호출 오류는 발생하지만 두 번째 오류는 성공합니다. 오류로 이번에는 다음과
'액세스 제어를 허용-출처'헤더 제공된 원점 같지 않은 값 'https://preview.hs-sites.com'를 갖는다. 따라서 'http://subdomain.example.com'은 액세스가 허용되지 않습니다.
질문 1 - 기원이 워드 프레스 사이트에서 캐시 된 때문이다?
add_filter('allowed_http_origins', 'my_add_origins'); function my_add_origins($origins) { $origins[] = 'https://preview.hs-sites.com'; $origins[] = 'http://subdomain.example.com'; return $origins; }
질문 2 : 다음과 같이 -
내가 지금 allowed_http_origins 워드 프레스 내에서 필터에 모두 http://subdomain.example.com 및 https://preview.hs-sites.com을 추가 한에 관계없이 추정 캐싱 - 왜 허용 https://preview.hs-sites.com 아니다 에 허용 된 원산지가 추가 된 경우?
add_action('rest_api_init', function() { remove_filter('rest_pre_serve_request', 'rest_send_cors_headers'); add_filter('rest_pre_serve_request', function($value) { $domains = [ 'https://preview.hs-sites.com', 'http://subdomain.example.com' ]; $allowed = get_http_origin(); if ($allowed && (in_array($allowed, $domains))) { header("Access-Control-Allow-Origin:" . esc_url_raw($allowed)); } elseif (!$allowed) { header("Access-Control-Allow-Origin: http://subdomain.example.com"); } header('Access-Control-Allow-Methods: GET'); return $value; }); });
그러나 동일한 오류가 발생합니다 - 나는 위의 기능을 테스트하는 방법을 확신했다
는
그래서 나는 또한 다음 시도했다.
질문 3 : 누군가가이 상황에서 장소 소요 어떤 오류를 말하는 과정을 설명시겠습니까 - 특히 그들이에서 자신의 가치를 얻고있는 곳 - 기원은 현재 페이지입니다? 그리고 'Access Control-Allow-Origin'헤더의 값이 '... - 이 값은 WordPress의 Access-Control-Allow-Origin 헤더로 설정되어 있어도 올바르게 설정되어 있습니까?
참고는 또한 아약스 요청에 노 캐시 헤더를 설정했지만, 때문에 프리 플라이트 요청이 오류가 발생합니다. 요청에 무작위 쿼리 문자열을 추가 했으므로 효과가 없습니다.
보안상의 이유로 Access-Control-Allow-Origin 헤더로 와일드 카드 값을 추가하지 마십시오. 그리고 무슨 일이 일어나고 있는지 정말 알고 싶습니다!