【发布时间】:2019-12-02 03:48:50
【问题描述】:
使用更新的代码进行编辑:仍然没有解决方案
谁能发现这段代码中的错误?
custom-page.php:
<form name="customForm">
<?php wp_nonce_field('code_check', 'codecheck'); ?>
Validation Code:<br>
<input type="password" name="inputcode" id="inputcode" maxlength="6" inputmode="numeric">
<input type="text" name="message" id="message" style="display:none; background-color: #FFCCCC;"><br>
<input type="button" name="submitbutton" value="Submit" onClick="customfunction()">
</form>
custom.js:
function customfunction() {
const userInput = document.addStamp.inputcode.value;
const token = document.addStamp.codecheck.value;
fetch(`http://...../wp-json/api/v1/custom?code=${userInput}&token=${token}`).then(r => r.json()).then(data => {
......
API 文件.php:
public function custom($request)
{
$params = $request->get_params();
$retrieved_nonce = $params[token];
if($retrieved_nonce) {
if (!wp_verify_nonce($retrieved_nonce, 'code_check' ) ) die( 'Failed security check' );
}
....
在我将 nonce 验证码添加到 api 请求之前,一切正常。
现在当我点击“提交”按钮时,它没有提交,我进入控制台:
Uncaught (in promise) SyntaxError: Unexpected token F in JSON at position 0
所以它失败了,因为“F”是失败消息的第 0 点。
但是,如果我输出“$retrived_nonce”,我实际上会得到我的页面源代码中显示的 nonce 值,所以看起来它正在到达端点?
我已尝试注销并重新登录,但没有任何变化。
我的代码设置有误吗?
【问题讨论】:
-
这真的很奇怪。因此,如下所示,我现在已将 nonce 值包含在端点 fetch 调用中。然后我可以输出该值,它与 nonce 值匹配。然而,如果我激活 !wp_verify_nonce 检查是否总是失败。