开发者

URL as URL's get parameters - problem with "&"

开发者 https://www.devze.com 2023-02-20 06:26 出处:网络
There is script that receives another url as GET parameter: script.php?file=http://www.google.com&id=123

There is script that receives another url as GET parameter:

script.php?file=http://www.google.com&id=123

The problem is:

when url has parameter itself, it is used as script's parameter, not that url's parameter:

script.php?file=http://www.google.com?q=a开发者_Python百科dsf&lang=en&id=123

URL is http://www.google.com?q=adsf&lang=en, but it is chopped after &, because it is viewed as related to script.php itself.

What can I do about this?

I tired to replace & with %26, but url get broken with it.


You need to encode the value with the percent-encoding.

If you’re using PHP, use rawurlencode (or urlencode if application/x-www-form-urlencoded is expected):

$url = 'http://www.google.com?q=adsf&lang=en';
echo 'script.php?file='.rawurlencode($url);


You need to URL encode the entire URL that you are passing as a parameter to another url (your script). %26 is the correct encoding for an &. Just make sure you decode it server-side before using it. You don't say what language(s) you're using, but most, inc javascript and php have native URL encoding functions.


Try to encode every special character like this:

script.php?file=http%3a%2f%2fwww.google.com%3fq%3dadsf%26lang%3den&id=123

although it might be better and easier to use rawurlencode().

Also, read this about URL encoding.

0

精彩评论

暂无评论...
验证码 换一张
取 消