http://www.exampl-6ren">
gpt4 book ai didi

javascript - 包含 "&"的 url 不适用于 google pagespeed api

转载 作者:行者123 更新时间:2023-11-30 11:30:24 28 4
gpt4 key购买 nike

我正在使用 Google pagespeed API 来测试我网站的网址。只要 url 结构不包含任何“&”(查询字符串参数),它就可以正常工作。

示例(有效)

  1. > http://www.example.com
  2. > http://www.example.com/?id=1234

但是当我像这样更改 url 时,它不会显示正确的结果

不起作用的例子

1) http://www.example.com/?id=1234&sub=890

Api 忽略“&sub=890”部分并返回 http://www.example.com/?id=1234 的结果

查看 API Javascript 代码:

 function runPagespeed() {        
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
var query = [
'url=' + URL_TO_GET_RESULTS_FOR,
'strategy=' + strategy,
'callback=runPagespeedCallbacks',
'key=' + API_KEY,
].join('&');
s.src = API_URL + query;
document.head.insertBefore(s, null);
}

所以看看这个函数,它表明 API 会将“sub=890”视为它自己的参数,因此它会忽略它。

当我使用 url http://www.example.com/?id=1234&sub=890 时在 https://developers.google.com/speed/pagespeed/insights/ ,它工作正常并显示结果

注意:我正在使用 pagespeed 示例代码进行测试,它是 https://developers.google.com/speed/docs/insights/v2/first-app

非常感谢任何帮助

最佳答案

您需要使用 encodeURIComponent 对 URI 进行编码,以便将参数视为输入。试试下面的

function runPagespeed() {        
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
var query = [
'url=' + encodeURIComponent(URL_TO_GET_RESULTS_FOR),
'strategy=' + strategy,
'callback=runPagespeedCallbacks',
'key=' + API_KEY,
].join('&');
s.src = API_URL + query;
document.head.insertBefore(s, null);
}

关于javascript - 包含 "&"的 url 不适用于 google pagespeed api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46440620/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com