wp-rest api 응용 프로그램에서 wordpress nonce를 사용할 수 없습니다.
안전한 앱을 가지고 있기 때문에 Nonce를 사용하고 있습니다만, 동작시킬 수 없습니다.몇 가지 방법을 시도해 봤는데 확인이 안 돼서 뭔가 빠진 것 같아요.
js 코드 fragment는 다음과 같습니다.
function placeNew(next){
_nonce = $('input#_nonce').val();
request = $.ajax({
type: 'POST',
url: url_path + '/foo/v1/newbee',
data: {bid : next , _nonce : _nonce},
security: '<?php echo wp_create_nonce( "a" ); ?>',
dataType: 'json'
});
request.done(function (response, textStatus, jqXHR){
str = JSON.stringify(response);
if(response["error"]){
alert(response["message"]);
}
난스는 다음 코드와 함께 페이지에 추가됩니다.
$nonce = wp_create_nonce( 'a' );
echo "<input type='hidden' id='_nonce' value=" . $nonce ."/>";
php에서는 다음 함수 fragment를 사용하여 난스를 가져오고 비교합니다.
function ace($request) {
global $wpdb;
$timestamp = time();
$nonce = (string) $request['_nonce'];
$verify = check_ajax_referer( 'a', $nonce, false );
if ( ! $verify){
$errMsg = $nonce . '-'. $verify .' not validated ';
return (object) array(error => true, message => $errMsg);
}
항상 "검증되지 않았습니다"라는 메시지가 나타납니다.$nonce에는 값이 있지만 $nonce에는 값이 없습니다.
문서에 따르면:
개발자가 수동으로 Ajax 요청을 하는 경우 각 요청과 함께 난스를 전달해야 합니다.API는 wp_rest로 설정된 액션에 난스를 사용합니다.그런 다음 _wpnonce 데이터 파라미터(POST 데이터 또는 GET 요구에 대한 쿼리) 또는 X-WP-Nonce 헤더를 통해 API에 전달할 수 있습니다.
놓치는 중요한 부분은 다음과 같습니다.
API는 wp_rest로 설정된 액션에 난스를 사용합니다.
이 기능이 작동하려면 에서 액션의 이름을 지정해야 합니다.wp_create_nonce로.wp_rest.
따라서 코드에 대해 다음 인스턴스를 모두 변경해야 합니다.
wp_create_nonce( "a" )
로.
wp_create_nonce( 'wp_rest' )
또한 docs의 설명에 따르면:
난스를 헤더로 제공하는 것이 가장 신뢰할 수 있는 접근법입니다.
따라서 이를 Ajax에 추가하는 것은 간단하며 다음과 같습니다.
var _nonce = "<?php echo wp_create_nonce( 'wp_rest' ); ?>";
$.ajax({
type: 'POST',
url: url_path + '/foo/v1/newbee',
data: {
bid : next
},
dataType: 'json',
beforeSend: function ( xhr ) {
xhr.setRequestHeader( 'X-WP-Nonce', _nonce );
}
});
또한 수표를 수정하기 위해
check_ajax_referer( 'a', $nonce, false )
지금 당장
check_ajax_referer( 'wp_rest', '_nonce', false )
언급URL : https://stackoverflow.com/questions/42179869/not-getting-wordpress-nonce-to-work-with-wp-rest-api-application
'programing' 카테고리의 다른 글
| 스키마에 있는 모든 테이블의 개수를 가져옵니다. (0) | 2023.04.04 |
|---|---|
| WaitUntilAllTasksAreFinished 오류 Swift (0) | 2023.04.04 |
| Web API Put Request가 Http 405 Method Not Allowed 오류를 생성합니다. (0) | 2023.04.04 |
| 치명적인 오류:허용된 메모리 크기 268435456바이트가 모두 사용됨(71바이트 할당 시도) (0) | 2023.04.04 |
| Google의 폴리머는 다른 프런트 엔드 프레임워크를 보완하거나 보완하기 위한 완전한 기능을 갖춘 프런트 엔드 프레임워크입니까? (0) | 2023.04.04 |