将我的 API 令牌存储在本地存储中是将令牌括在双引号中

Bla*_*man 1 javascript reactjs

当我的 API 返回会话令牌时,我使用以下函数将其保存在本地存储中:

export const storeItem = (key: string, item: any) => {
  if (!localStorage) return;

  try {
    return localStorage.setItem(key, JSON.stringify(item));
  } catch (err) {
    console.error(`Error storing item ${key} to localStoragee`, err);
  }
};
Run Code Online (Sandbox Code Playgroud)

我调用我的 React Redux 操作:

storeItem('authToken', resp.data.token);
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当令牌保存在本地存储中并且我在 chrome 开发工具中查看它时,令牌会用双引号引起来,如下所示:

"abc123"
Run Code Online (Sandbox Code Playgroud)

然后,当我将查询字符串中的这个令牌传递给我的 API 时,它看起来像:

token="abc"
Run Code Online (Sandbox Code Playgroud)

(但是双引号是用%22编码的)

为什么会发生这种情况?我该如何删除这些引号?

更新 我正在构建这样的查询字符串:

let authToken = localStorage.getItem('authToken');
let url = API_ROOT + '/sessions/destroy?token=' + authToken;


export const getItemFromStorage = (key: string) => {
  if (!localStorage) return;

  try {
    return JSON.parse(localStorage.getItem(key));
  } catch (err) {
    console.error(`Error getting item ${key} from localStorage`, err);
  }
};
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 5

您将字符串化为 JSON(添加了 )",而不是解析。

您应该在读取 localStorage 时进行解析(但它看起来没用)。或者只存储字符串而不将其编码为 JSON。