我正在使用curl调用API POST并传递15个post字段,其中一个是实际的wbsite URL。例如
https://www.test.com?URL=https://www.myurl.com;&Name=John
使用 urlencode 转换 URL post 字段中的字符,并且接收 POST 调用的 API 不会将其识别为实际 URL。有没有办法在放置时保持 URL 字符串不变?
如果你使用的是GET
查询参数,你需要对值进行编码,然后在后端对其进行解码:
https://www.test.com?URL=https%3A%2F%2Fwww.myurl.com
然后:
urldecode($_GET['url'])
对于POST
来说,application/x-www-form-urlencoded
也是如此,但对application/json
来说并不重要。
另外,请注意,您的URL中有一个额外的
;
,如果您包含它,它将使其无效。
编辑:
我还要补充一点,一般来说,始终对从查询/表单数据接收的值进行 urldecode 是一种很好的做法。这里的一般想法是,虽然你可能不想要urlencode数据,但这就是Web的构建方式 - 你应该以一种由客户端决定的方式构建代码。这被认为是数据清理中的重要步骤,应始终在验证之前进行。
您可以使用 php 内置方法来解码 url 编码的数据。
$actualUrl = urldecode ($_GET ['url']);