WP REST API 的 JWT 身份验证:“找不到与 URL 和请求方法匹配的路由”

Posted

技术标签:

【中文标题】WP REST API 的 JWT 身份验证:“找不到与 URL 和请求方法匹配的路由”【英文标题】:JWT Authentication for WP REST API: "No route was found matching the URL and request method" 【发布时间】:2016-12-06 03:27:07 【问题描述】:

我的 REST 运行良好,我可以从链接中获得结果:“172.18.52.78/bniforum451/wp-json/wp/v2/posts”和所有组合 REST 链接。

但是,当我调用链接:172.18.52.78/bniforum451/wp-json/jwt-auth/v1/token 时,我总是得到“找不到与 URL 和请求方法匹配的路由”。

即使当我调用 (172.18.52.78/bniforum451/wp-json/jwt-auth/v1/) 时,我也能得到结果:


  "namespace": "jwt-auth/v1",
  "routes": 
    "/jwt-auth/v1": 
      "namespace": "jwt-auth/v1",
      "methods": [
        "GET"
      ],
      "endpoints": [
        
          "methods": [
            "GET"
          ],
          "args": 
            "namespace": 
              "required": false,
              "default": "jwt-auth/v1"
            ,
            "context": 
              "required": false,
              "default": "view"
            
          
        
      ],
      "_links": 
        "self": "172.18.52.78/bniforum451/wp-json/jwt-auth/v1"
      
    ,
    "/jwt-auth/v1/token": 
      "namespace": "jwt-auth/v1",
      "methods": [
        "POST"
      ],
      "endpoints": [
        
          "methods": [
            "POST"
          ],
          "args": []
        
      ],
      "_links": 
        "self": "172.18.52.78/bniforum451/wp-json/jwt-auth/v1/token"
      
    ,
    "/jwt-auth/v1/token/validate": 
      "namespace": "jwt-auth/v1",
      "methods": [
        "POST"
      ],
      "endpoints": [
        
          "methods": [
            "POST"
          ],
          "args": []
        
      ],
      "_links": 
        "self": "172.18.52.78/bniforum451/wp-json/jwt-auth/v1/token/validate"
      
    
  ,
  "_links": 
    "up": [
      
        "href": "172.18.52.78/bniforum451/wp-json/"
      
    ]
  

解决我的问题的最佳做法是什么?

我正在使用:

Wordpress 版本 4.5.3 XAMPP v3.2.1(本地服务器 Windows 7) php 版本 5.6.14 WP REST API(2.0-beta13 版) WP-API 的 JWT 身份验证(版本 1.2.0)

谢谢

金马

我从“172.18.52.78”链接中删除了“http”,因为我还没有 10 个声望:D

【问题讨论】:

在我的情况下,问题是我使用了 HTTP URL,但网络服务器被配置为将 HTTP 重定向到 HTTPS。将请求 URL 中的 HTTP 更改为 HTTPS 解决了问题。 【参考方案1】:

试试看我制作的这个视频:https://youtu.be/Mp7T7x1oxDk

我认为您正在对 /bniforum451/wp-json/jwt-auth/v1/token 执行 GET 请求,而它应该是 POST。您还应该在请求正文中传递usernamepassword

/bniforum451/wp-json/jwt-auth/v1/ 起作用的原因是因为它旨在响应 GET 请求而不是 POST。它只为您提供 API 信息。

如果您查看成功调用的输出,它会立即告诉您/token 端点接受哪些方法。

"/jwt-auth/v1/token": 
  "namespace": "jwt-auth/v1",
  "methods": [
    "POST"
  ],
  "endpoints": [
    
      "methods": [
        "POST"
      ],
      "args": []
    
  ],
  "_links": 
    "self": "172.18.52.78/bniforum451/wp-json/jwt-auth/v1/token"
  
,

【讨论】:

以上是关于WP REST API 的 JWT 身份验证:“找不到与 URL 和请求方法匹配的路由”的主要内容,如果未能解决你的问题,请参考以下文章

WP-API 的 JWT 身份验证 - 发布到 ACF 字段

如何更改 WP-API 的 JWT 身份验证的 JSON 响应?

需要一些有关 REST API 的 JWT 身份验证的信息

带有 jwt 身份验证的 django rest api 要求 csrf 令牌

使用 otp 获取 api 令牌的 Django REST 框架的 JWT 身份验证

如何在 vue 中存储、管理 REST API JWT 身份验证令牌?