我正在尝试使用JS中以前编码的URL进行卷曲
当URL未使用js编码时(例如https://www.google.com),它可以工作 如果将URL编码为https%3A%2F%2Fwww.google.com
,则无法使用+ 2.*
- *.txt
答案 0 :(得分:1)
请勿在整个网址上使用encodeURIComponent
。请改用encodeURI
。 encodeURI
检测需要编码的内容和不需要编码的内容。其输出可以无错误地传递到curl
或fetch
。
console.log(encodeURIComponent('http://dont.encode.before?a=encode me'));
console.log(encodeURI('http://dont.encode.before?a=encode me'));
答案 1 :(得分:1)
URL编码为https%3A%2F%2Fwww.google.com
时不起作用
然后先将其解码,
link=decodeURI(link)
但是您还需要在将该URL作为命令行参数传递之前转义该URL,在PHP中将使用escapeshellarg,但这是它的javascript端口:http://locutus.io/php/exec/escapeshellarg/
function escapeshellarg (arg) {
// discuss at: http://locutus.io/php/escapeshellarg/
// original by: Felix Geisendoerfer (http://www.debuggable.com/felix)
// improved by: Brett Zamir (http://brett-zamir.me)
// example 1: escapeshellarg("kevin's birthday")
// returns 1: "'kevin\\'s birthday'"
var ret = ''
ret = arg.replace(/[^\\]'/g, function (m, i, s) {
return m.slice(0, 1) + '\\\''
})
return "'" + ret + "'"
}
代码应显示为
var cmd = "curl -i " + escapeshellarg(encodedLink);