我应该允许“。”在网址中?
Posted
技术标签:
【中文标题】我应该允许“。”在网址中?【英文标题】:should I allow "." in URL? 【发布时间】:2013-01-19 23:21:12 【问题描述】:我正在使用 codeigniter 路由进行 URL 屏蔽。在这里,我允许用户输入一个文本,该文本将是他在特定 URL 下提供的详细信息的 URL。
即,如果用户输入“offer1”,那么他的优惠详情将在
offers.com/offer/offer1
这里我只接受字母和数字作为 URL 文本。我应该允许“。”在 URL 文本中?我应该在这里遵循什么标准方法?
【问题讨论】:
当他输入报价名称时,使用 base64_encode() 对其进行编码并发送到 url,如果您想稍后使用它,请使用 base64_decode() 对其进行解码.....如果您遇到任何问题,请告诉我问题.
应该没问题,检查一下:blooberry.com/indexdot/html/topics/urlencoding.htm#whatwhy(虽然与 codeigniter 无关,它可能有自己的规则,取决于它的工作方式,我不确定)
为什么不呢? urlencode
效果很好。
A .
是允许使用的有效字符,不会导致任何问题,只要确保您的 CI 路由配置允许使用它即可。
关于 .是有效字符,它令人困惑,因为像 (.com/url.php) 这样的 url 就像一个带有 php 扩展名的文件,另一个 (.com/url.jpeg) 它显示为图像!它是一种 URL 伪装攻击 :)
【参考方案1】:
当用户输入报价名称时,将其作为$offer_name
并使用base64_encode($offer_name);
对其进行编码
$encoded_name = base64_encode($offer_name);
将此$encoded_name
发送到网址............如果您想使用优惠名称,请使用base64_decode($encoded_name);
进一步解码
【讨论】:
我不知道有什么区别伙计我遇到了这样的问题我尝试了 urlencode 它给出了不允许的字符所以我尝试了 base64_encode() urlencode 应该接受字符串并使它们成为 URL 安全的,base64_encode 编码 base64 中的东西。【参考方案2】:如果您需要“。”您可以将其保留在 urls 中,如果您随后使用 url 参数运行查询,只需在运行查询之前转义参数即可。
如果 url 参数有问题,我通常会向 base_url();
发送 301 redirect
。
只有我的 2 美分
【讨论】:
【参考方案3】:您可以通过在$config['permitted_uri_chars']
配置变量config.php
中添加"."
在URL 中允许"."
。
【讨论】:
以上是关于我应该允许“。”在网址中?的主要内容,如果未能解决你的问题,请参考以下文章
微信域名解封-防封系统 怎么样才能让被微信屏蔽的网址允许访问
HTACCESS RewriteRules 带有漂亮的 SEO 网址(不允许访问物理文件位置)
application.properties 中的 web.cors.allowed-origins 不允许特定网址的 CORS