【问题标题】:Parsing an URL with special character in a Node Express route在 Node Express 路由中解析具有特殊字符的 URL
【发布时间】:2020-02-09 07:51:34
【问题描述】:

我尝试使用 AWS Cognito 在身份验证过程中返回的特殊字符解析 URL。

我找不到检索“id_token”参数的方法,因为 NodeJs req 似乎没有包含 # 之后的所有内容

我尝试过使用各种 req.query、req.originaURl。我可能错过了什么

这里是返回的链接http://localhost:8080/auth#id_token=eyJraWQiOiERubiJ5AwdK9Rzau6BX0lYLQCvFDoGv1boLMnKnRexpires_in=3600&token_type=Bearer

预期的结果应该返回#id_token的值

【问题讨论】:

  • 你是如何获得返回的链接的?
  • 是cognito返回的

标签: javascript node.js amazon-cognito


【解决方案1】:

URL 中的# 符号是fragment identifier,它不会传输到服务器。

阅读更多关于它here

【讨论】:

【解决方案2】:

#只能在客户端访问,所以你需要创建一个请求并将令牌发送到服务器,例如:

var tokenParams = window.location.hash.substr(1);

【讨论】:

  • 这就是结论。我猜 AWS cognito 是在强制用户处理收到的令牌客户端。
【解决方案3】:

没有看到您的代码很难提供帮助。此外,由于无法查看从该 URL 返回的内容,因此很难为您进行测试。

分配给哈希属性的值中包含的 URL 字符是 precent 编码的。查看 url.hash 的 Node.js 文档,它可用于获取和设置 URL 的片段部分。

我相信这应该会有所帮助。

转到https://nodejs.org/api/url.html 并搜索 url.hash。

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 2014-12-09
    • 2011-04-11
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2014-04-09
    相关资源
    最近更新 更多