WordPressにはすでにjQuery-WordPressアプリケーション呼び出し用のデフォルトURLがあり、それはajaxurl
としてよく知られています。ただし、任意のホスト名がそれを使用してアクセスできるように、 クロスオリジンリソース共有 (CORS)を有効にする必要がある場合があります。
私の現在の解決策は/wp-includes/http.php
に次の行を追加することです。
@header( 'Access-Control-Allow-Origin: *' );
そのようになります:
...
function send_Origin_headers() {
$Origin = get_http_Origin();
@header( 'Access-Control-Allow-Origin: *' );
if ( is_allowed_http_Origin( $Origin ) ) {
@header( 'Access-Control-Allow-Origin: ' . $Origin );
@header( 'Access-Control-Allow-Credentials: true' );
if ( 'OPTIONS' === $_SERVER['REQUEST_METHOD'] )
exit;
return $Origin;
}
if ( 'OPTIONS' === $_SERVER['REQUEST_METHOD'] ) {
status_header( 403 );
exit;
}
return false;
}
...
それはうまくいきますが、WordPressコアを編集することは良い解決策ではありません。
ajaxurl
に対してCORSを有効にするより良い方法はありますか?
ミロは正しいです。
例えば、あなたのテーマのfunctions.phpファイルに行き、そして以下を追加してください:
add_filter( 'allowed_http_origins', 'add_allowed_origins' );
function add_allowed_origins( $origins ) {
$origins[] = 'https://site1.example.com';
$origins[] = 'https://site2.example.com';
return $origins;
}
https://site1.example.com からあなたのサイトのajax URLへのajax呼び出しは、応答に適切なAccess-Control-Allow-Originヘッダを持つようになります。例えば。
$.ajax({
url: 'https://site1.example.com/wp-admin/admin-ajax.php',
type: "POST",
data: {
...
},
success: function(doc) {
...
}
});
次のコードでそれを達成することができます。
あなたを開きます header.php
そのファイルで次のテキストを見つけます
< !DOCTYPE html>
そして次のものと交換してください。
<?php /** @package WordPress @subpackage Default_Theme **/
header("Access-Control-Allow-Origin: *");
?>
<! DOCTYPE html>
...
今すぐあなたのヘッダーにAccess-Control-Allow-Origin:*を見つけることができます。
これが役立つことを願っています..!.