JSON API Wordpress에서 CORS 사용
JSON API라는 플러그인이 있는 워드프레스 사이트를 가지고 있습니다.이 플러그인은 워드프레스에 포함된 콘텐츠의 JSON 형식을 제공합니다.php 헤더에 헤더("Access-Control-Allow-Origin: *")를 추가하여 워드프레스에서 CORS를 활성화할 수 있었습니다.하지만 JSON API 플러그인이 제공하는 URL을 시도해보니 CORS가 더 이상 작동하지 않습니다.
워드프레스 사이트입니다 제가 테스트를 할 때...테스트용 cors 웹사이트에서 동작하고 있는지 확인했는데...http://kiwa-app.loading.net/
하지만 JSON api가 제공하는 URL로 시도하면 가 작동하지 않습니다.아직 '접근 제어-허용-발신지' http://kiwa-app.loading.net/?json=info 오류가 발생함
잘 부탁드립니다!!!
WordPress API를 몇 가지 사용해 보았습니다만, WP-API를 '공식'으로 사용하고 계신 분들을 위해 이 CORS에 많은 문제가 있었습니다.그리고 제가 알게 된 것은 .htaccess 접근 방식과 다른 몇 가지 접근 방식 사이에서 우연히 발견한 것입니다.테마 기능에 추가합니다.php가 가장 잘 작동했습니다.
function add_cors_http_header(){
header("Access-Control-Allow-Origin: *");
}
add_action('init','add_cors_http_header');
이러한 조합(.htaccess, header.php, api.php, functions.php)은 사용하지 마십시오.
그래, 드디어 쉬운 방법을 찾아냈어...
다음 사항을 추가해야 합니다.
<? header("Access-Control-Allow-Origin: *"); ?>
api.php 파일에서 이 파일은 wp-content/plugins/json-api/singletons/api.php에 있습니다.
나는 그것이 같은 문제를 가진 더 많은 사람들에게 도움이 되었으면 좋겠어!
Wordpress 5.2.3을 사용하여 GET와 POST를 외부에서 사용하는 동안 다음과 같이 드디어 참깨를 열었습니다.저는 위의 모든 답변을 시도해 보았지만, 그 후 제 사례에 맞는 솔루션을 찾았습니다.
add_action( 'rest_api_init', function () {
add_action( 'rest_pre_serve_request', function () {
header( 'Access-Control-Allow-Headers: Authorization, Content-Type, X-WP-Wpml-Language', true );
header("Access-Control-Allow-Origin: *");
} );
}, 15 );
WordPress가 미래에 CORS 통제를 위한 공식적인 도그 플랩을 갖기를 바란다.
응답이 브라우저로 전송되기 전에 2개의 액션 훅을 실행하고 새로운 액션 훅을 삽입할 수 있습니다.header()
:
do_action("json_api", $controller, $method);
do_action("json_api-{$controller}-$method");
첫 번째 방법은 모든 방법으로 실행되며 두 번째 방법은 특정 방법을 대상으로 합니다.다음은 첫 번째 구현과 두 번째를 찾는 코멘트 방법을 보여 줍니다.
add_action( 'json_api', function( $controller, $method )
{
# DEBUG
// wp_die( "To target only this method use <pre><code>add_action('$controller-$method', function(){ /*YOUR-STUFF*/ });</code></pre>" );
header( "Access-Control-Allow-Origin: *" );
}, 10, 2 );
이제 REST API가 코어와 병합되었으므로rest_api_init
액션.
add_action( 'rest_api_init', function()
{
header( "Access-Control-Allow-Origin: *" );
} );
WordPress 5(실제로는 4.4+)는 WP 헤더를 통해 처리할 수 있습니다.
이것을 시험해 보세요.
add_filter( 'wp_headers', 'send_cors_headers', 11, 1 );
function send_cors_headers( $headers ) {
$headers['Access-Control-Allow-Origin'] = $_SERVER[ 'HTTP_ORIGIN' ];
return $headers;
}
이것에 의해, 임의의 소스로부터의 액세스가 허가됩니다.보안을 위해 WordPress 사이트에 요청을 할 수 있는 허용 도메인 배열을 설정하고 요청을 하는 도메인이 허용 목록에 없는 경우 CORS를 단락할 수 있도록 해야 합니다.
add_filter( 'wp_headers', 'send_cors_headers', 11, 1 );
function send_cors_headers( $headers ) {
$allowed_domains = array( 'https://my.okdomain.com' , 'http://anothergoodone.com');
if ( ! in_array( $_SERVER[ 'HTTP_ORIGIN' ] , $allowed_domains ) ) return $headers;
$headers['Access-Control-Allow-Origin'] = $_SERVER[ 'HTTP_ORIGIN' ];
return $headers;
}
wordpress goto plugins > JSON API > Edit
오른쪽 파일 선택에서
json-api/singletons/api.syslog
다음 행을 추가해야 합니다.
헤더("Access-Control-Allow-Origin: *");
코드도 이와 비슷해야 합니다.다른 곳에 이 행을 추가하면 예상대로 작동하지 않을 수 있습니다.
<?php
header("Access-Control-Allow-Origin: *");
class JSON_API {
function __construct() {
$this->query = new JSON_API_Query();
$this->introspector = new JSON_API_Introspector();
$this->response = new JSON_API_Response();
add_action('template_redirect', array(&$this, 'template_redirect'));
add_action('admin_menu', array(&$this, 'admin_menu'));
add_action('update_option_json_api_base', array(&$this, 'flush_rewrite_rules'));
add_action('pre_update_option_json_api_controllers', array(&$this, 'update_controllers'));
}
function template_redirect() {
코드를 가 해결되지 ('로 )funtions.php
/ 신신테 / / / / / / / /) /.htaccess
이 문제는 호스팅 서비스 프로바이더에게 있을 수 있습니다.
는 이 것을 해 본 , 이 가 이 로 인해 되었다.infinityfree . com
( ( ( ( ( ( ( ( ( ( ( ( ( ) 。
참고 자료: https://wordpress.org/support/topic/wordpress-api-blocks-post-by-cors-policy/ https://wordpress.org/support/topic/wordpress-api-blocks-post-by-cors-policy-2/
여러 기원으로 인해 이 문제를 겪고 있는 모든 사용자를 위해
워드프레스 사이트를 호스팅하는 서버에서 ../wp-content/plugins/json-rest-api로 이동하고 여기서 플러그인을 엽니다.php 파일.
이 기능에서는
function json_send_cors_headers( $value ) {..}
헤더를 변경
header( 'Access-Control-Allow-Origin: ' . esc_url_raw( $origin ) );
로.
header( 'Access-Control-Allow-Origin: *' );
저와 같은 문제를 겪고 있는 모든 사람에게 도움이 되길 바랍니다.
이 솔루션은 WordPress 5.1.1 및 Gutenberg와 연동됩니다.
add_filter('rest_url', function($url) {
$url = str_replace(home_url(), site_url(), $url);
return $url;
});
WordPress 프로젝트에서 다음 파일로 이동하여 다음과 같이 수행합니다.
»wp-includes/rest-api.php
★★★★
header( 'Access-Control-Allow-Origin: ' . $origin );
대상:
header( 'Access-Control-Allow-Origin: *' );
»wp-includes/http.php
★★★★
header( 'Access-Control-Allow-Origin: ' . $origin );
대상:
header( 'Access-Control-Allow-Origin: *' );
언급URL : https://stackoverflow.com/questions/25702061/enable-cors-on-json-api-wordpress
'programing' 카테고리의 다른 글
리액션 네이티브 스타일. 폭: 백분율 - 숫자 (0) | 2023.03.13 |
---|---|
Typescript primitive type: type "number" 와 "Number" (TSC는 대소문자를 구분하지 않습니다)의 차이점이 있습니까? (0) | 2023.03.13 |
복잡하지만 "표준" 웹 앱에 php 프레임워크 대신 Wordpress를 사용하면 무엇을 잃게 됩니까?트레이드오프가 가치가 있을까요? (0) | 2023.03.13 |
여러 행을 한 행에 집약하는 Oracle SQL 쿼리가 있습니까? (0) | 2023.03.13 |
Woocommerce에서 제품 이름 가져오기 (0) | 2023.03.13 |