Не работает, когда URL закодирован как https% 3A% 2F% 2Fwww.google.com
, а затем сначала декодируется,
link=decodeURI(link)
но вам также нужно экранировать этот 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);