Javascript 如何安全地将url和文件名作为查询字符串的一部分传递?

Javascript 如何安全地将url和文件名作为查询字符串的一部分传递?,javascript,Javascript,假设我有一个url:http://foo.com 通常,如果我想向其传递任何参数,我会执行以下操作: http://foo.com?param1=car&param2=red 但是如果我想传递一个url和文件名呢? 我不能这么做: http://foo.com?url=http://bar.com/kitty.jpg&filename=kitty.jpg 因为有很多字符我可能不得不转义。我用javascript创建url,所以我可以使用javascript API来构造url

假设我有一个url:
http://foo.com

通常,如果我想向其传递任何参数,我会执行以下操作:

http://foo.com?param1=car&param2=red
但是如果我想传递一个url和文件名呢? 我不能这么做:

http://foo.com?url=http://bar.com/kitty.jpg&filename=kitty.jpg
因为有很多字符我可能不得不转义。我用javascript创建url,所以我可以使用javascript API来构造url。有没有关于如何做到这一点的建议,以及要注意哪些陷阱?如何安全地创建url?

您只需要-简单示例:

var url='http://bar.com/kitty.jpg';
var filename='kitty.jpg';

var completeUrl='http://foo.com'+
   '?url='+encodeURIComponent(url)+
   '&filename='+encodeURIComponent(filename);

当var url将包含另一个&and时会发生什么?这正是您这样转义它们的原因:“'”我相信encodeurlcomponent不会转义“”。这有关系吗?啊,是的,它的行为有点不同于常规编码URI: