我应该允许“。”在网址中?

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

使用网址的爬虫[关闭]