WordPress APIを照会するときに起点ヘッダーのキャッシングと考えられる問題があります。しかし、私は何が起こっているのか、どのように修正できるのかを正確に調べるのには苦労しています。Access Control-Allow-Originとキャッシングの理解
ファースト - ここで何が起こっているのかです:
私はAJAXを経由してWP APIメニュープラグインによって追加のWordPress API、具体的にエンドポイントを照会ハブスポットのページを持っている - 私は、メニューを構築するようでワードプレスで更新する場合クライアント(またはマーケティングチームの1人) - メニューはHubSpotページでも更新されます。
ハブスポットのページには、WordPressのサイトのサブドメインである、と最初はWordPressのサイトには、ヘッダのアクセス制御 - 許可 - 起源は、明示的に設定だけサブドメインのURLを追加しました。
HubSpot内の編集画面を参照すると、メインメニューは読み込まれませんが、2番目の呼び出し(別のメニュー用)は成功します。次のようにメインメニューのエラーがある:
「アクセス制御は、許可原点」ヘッダが供給 原点に等しくない値 「http://subdomain.example.com」を有します。したがって、オリジン 'https://preview.hs-sites.com'は許可されません。
http://subdomain.example.comは、ライブページのURLです。不思議なことに、プレビューページの実際のURLはhttps://preview.hs-sites.comではありませんが、プレビューがiframeに読み込まれる可能性があるため、これが原因と思われます。
ライブURLに行くと、同じことが起こります。最初の呼び出しエラーですが、2番目のエラーは成功します。この時間は、次のようにエラーがある:
「アクセス制御 - 許可原点」ヘッダが供給 原点に等しくない値 「https://preview.hs-sites.com」を有します。したがって、オリジン 'http://subdomain.example.com'は許可されません。
質問1 - 原点が のWordPressサイトでキャッシュされているので、これは?
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のWordPress内フィルタの両方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:誰かがこのような状況で行わ を取り、どのようなエラーを言っているのプロセスを説明してくださいでした - 特に彼らはから値を取得しているところ - 起源は現在のページですが?そして、 'アクセス制御の許可元'ヘッダーに値 '...があります - これは の値がWordPressの アクセス制御許可原点ヘッダーとして設定されているもので設定されていますか?
注 Iはまた、AJAXリクエストでないキャッシュヘッダを設定しようとしたが、持っているので、プリフライトリクエストのこのエラー。また、リクエストにランダムなクエリーストリングを追加しましたが、効果はありません。
セキュリティ上の理由から、Access-Control-Allow-Originヘッダーとしてワイルドカード値を追加しないようにしたいと考えています。そして、私は本当に何が起こっているのか理解したいと思います!