建议删除斜杠的编码,我可以将其用作 REST 样式 URL 参数的格式
给定 REST 样式 URL 的路径:
http://site.com/rest/customer/foo/robot/bar/1
当您获取它时,它会向 foo-customer 返回一个 PDF,其中包含 bar 的页面 1 -网址。
而 foo 是客户的名称 bar 是一个 URL。 URL 通常包含斜杠,可能看起来像这样:
http://anothersite.com/interestingarticle.html
由于 REST URL 的单独参数由斜杠分隔,我不能将其直接放入上面的 REST URL 中。我应该使用哪种编码?我不能使用 Base 64,因为它也使用斜线。
作为技术说明,我将在 .NET 应用程序中对 URL 进行编码,并在 PHP 中对其进行解码。
Given a path to a REST style URL:
http://site.com/rest/customer/foo/robot/bar/1
When you GET it, it returns a PDF to the foo-customer containing page 1 of the bar-URL.
While foo is the name of the customer bar is an URL. The URL usually contains slashes and might look something like this:
http://anothersite.com/interestingarticle.html
As REST URL's separate arguments by slashes I can't just put it into the REST URL above. Which encoding should I use? I can't use Base 64 as it utilizes the slash as well.
As a technical note I will encode the URL in a .NET-application and decode it in PHP.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的用例到底是什么?为什么 bar 需要是 URL?服务器可以以任何它想要的方式构造 URI。
如果您出于某种原因必须使用该 URL,请执行以下操作:
(当然带有 urlencoded 查询字符串)。
What is your use case exactly? Why does bar need to be a URL? The server can construct the URIs any way it wants to.
If you for some reason MUST use the URL, do this:
(with urlencoded query string of course).
通过对 URL 进行双重 URL 编码,它将永远不会包含任何斜杠,因此可以使用由斜杠分隔的参数。
使用 C# 对 URL 进行编码并从 .NET 发送:
接收 PHP 脚本对 URL 进行双重解码:
By double URL-encoding the URL it will never contain any slashes and may therefore use parameters separated by slashes.
The URL is encoded and sent from .NET using C#:
The receiving PHP-script double decodes the URL: