electron-request icon indicating copy to clipboard operation
electron-request copied to clipboard

URL编码问题

Open wangdenkun opened this issue 1 year ago • 0 comments

node: v21.1.0 electron: 25.8.0

  async test() {
    let url = 'https://xxxx/yyyyy'
    let query = {
      data1: 'abc:edf'
    }
    // let fullUrl = this.getQueryUrlOfApi(url, query)
    try {
      let response = await request(url, {
        method: 'GET',
        query: query
      })
      // let response = await request(fullUrl, {
      //   method: 'GET'
      // })
      return await response.json()
    } catch (e) {
      return {
        success: false,
        message: e.toString()
      }
    }
  }
  getQueryUrlOfApi(url, query) {
    const parsedURL = new URL(url)
    const { searchParams } = parsedURL
    for (const [queryKey, queryValue] of Object.entries(query)) {
      searchParams.set(encodeURIComponent(queryKey), queryValue)
    }
    return parsedURL.href
  }

query参数里的“:”编码有问题,通过electron的session.defaultSession.webRequest.onBeforeSendHeaders确实能看到最后被编码成了“%253A”,所以不得不使用getQueryUrlOfApi防止重复编码两次。 可能是我没找到相关的设置,也可能是新版electron会自动编码URL?

wangdenkun avatar Nov 04 '23 12:11 wangdenkun