【问题标题】:Is it possible to access params of a redirected url in JavaScript?是否可以在 JavaScript 中访问重定向 url 的参数?
【发布时间】:2021-09-01 05:00:15
【问题描述】:

当我点击这个网址时,https://www.firstwebsite.com?redirect_uri=https://www.secondwebsite.com&response_type=code 它会重定向到具有不同网址的页面,https://www.secondwebsite.com?code=aLongString

我正在尝试访问在重定向时加载的 url 的 code 参数。

这是我尝试过的:

fetch('https://www.firstwebsite.com?redirect_uri=https://www.secondwebsite.com&response_type=code')
    .then(getParams => {
        const params = new URLSearchParams(window.location.search)
        const code = params.get('code')
        console.log(code)
    }
)

但是这只会返回undefined

我也试过这个:

const url_string = 'https://www.firstwebsite.com?redirect_uri=https://www.secondwebsite.com&response_type=code'
const url = new URL(url_string)
const code = url.searchParams.get('code')
console.log(code)

但这会返回第一个 url,而不是我要重定向到的那个。

有谁知道如何做到这一点?

【问题讨论】:

  • 你的意思是url.searchParams.get('redirect_uri')
  • 谢谢@SimoneRossaini 我刚刚尝试过,但它只返回了重定向的来源,而不是它的参数
  • 看答案,是工作..
  • 啊,我意识到为什么它对我不起作用。我重定向的 url 中的 code 参数来自我的第一个 url 中的附加参数 response_type=code。我之前没有提到这一点以节省空间,但我现在明白这很重要。我已经编辑了我的问题以显示这一点。
  • window.location.search 指的是你当前的页面的位置;提出您的 fetch background 请求,并不会改变任何相关内容。你应该看看developer.mozilla.org/en-US/docs/Web/API/Response/redirected

标签: javascript url redirect parameters fetch


【解决方案1】:

如您所见,searchParams 工作正确:

const url_string = 'https://www.firstwebsite.com?redirect_uri=https://www.secondwebsite.com'
const url = new URL(url_string)
const code = url.searchParams.get('redirect_uri')
console.log(code)

在您发表评论后,这有点棘手,但如果您现在的网址始终相同,则可以使用

const url_string = 'https://www.firstwebsite.com?redirect_uri=https://www.secondwebsite.com&response_type=code'
const firstSearch = url_string.split('?redirect_uri=');
console.log(firstSearch[1])

const url_string = 'https://www.firstwebsite.com?redirect_uri=https://www.secondwebsite.com?code=aLongString'
const firstSearch = url_string.split('?code=');
console.log(firstSearch[1])

【讨论】:

  • 谢谢,但这只是返回“代码”这个词,我需要它来返回重定向 url 中显示的实际代码
  • 我改成了?redirect_uri=
  • 如此接近!这将返回https://www.secondwebsite.com&response_type=code 我需要返回代码是什么...
  • 我不知道你是不是在开玩笑 :) 我之前给出的答案返回了“代码”,这将是你需要的代码。它写了“code”,因为字符串表示“code”,但如果它说“hello”,它会返回“hello”,我添加另一个 sn-p
  • 哈哈对不起,我不是在骗你。我的第一个网址包含参数response_type=code,但重定向的网址有code=thisIsTheCodeINeed
猜你喜欢
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
  • 2020-02-17
  • 2012-06-19
  • 2018-04-21
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多