我有以下代码不起作用。表示 ITMS 服务不使用获取请求调用 URL。
header('Location: itms-services://?action=download-manifest&url=http://www.mysite.com/plistReader.php?id=123');
如果我删除id=123
它开始工作。但我需要发送这个以保持 id 动态。在会话中我也无法通过。请帮忙。
您需要将该问号 URL 编码为%3F
,因为它是保留字符。正如@wroniasty 指出的那样,您还需要将=
as编码%3D
。
header('Location: itms-services://?action=download-manifest&url=http://www.mysite.com/plistReader.php%3Fid%3D123');
另见: http: //www.blooberry.com/indexdot/html/topics/urlencoding.htm
切勿手动转义 URL 字符。让 PHP 5 的函数 -urlencode()
并且http_build_query()
- 为您完成繁重的工作。这避免了某些 GET 参数名称/值对可能包含需要传输的敏感字符的问题,例如
<?php
$base_url = "http://www.example.com/plistReader.php";
$data = Array("id" => 123, "dangerous" => ":?&= are some sensitive chars");
$itms_url = "itms-services://?action=download-manifest&url=" . urlencode($base_url . "?" . http_build_query($data));
header('Location: ' . $itms_url);
?>