如何用JS编码

How to encode with JS

我正在尝试为第三方生成一些签名 API,但出现以下错误:合作伙伴未获得授权。这意味着我没有对我的搜索词进行编码或创建签名。

签名是时间戳、访问密钥和查询条件的编码哈希值。

下面是我的代码:

const timestamp = Date.now();
const searchTerm = encodeURI(this.state.searchText);
const signature = sha1(timestamp + searchTerm);

第三 为了网页安全,查询字词在呈现到页面之前应进行 Java 脚本编码。这是一个例子: queryTermEncoded = '@HttpUtility.JavaScriptStringEncode(queryTerm)';

如何从上面编码时间戳和签名,好像 encodeURI 不起作用,我无法编码? 我需要以某种方式对时间戳和搜索词进行编码。

下面是一些写在Java、Ruby等地方的例子

http://www.infospace.com/partners/sdk/csr/signingSample.html

根据 C# 示例,我认为问题出在日期和 encodeURI 上,试试这个:

// now UTC
var date = new Date(Date.now());
// add 30 seconds like the examples
date.setSeconds(date.getSeconds() + 30);
// format to "yyyyMMddHHmm"
const timestamp = date.toISOString().replace(/[^0-9]/g, '').substr(0, 12);

// dont need to encode
const searchTerm = this.state.searchText; 

// hash timestamp + token + searchTerm
const signature = sha1(timestamp + token + searchTerm);