gpt4 book ai didi

php - Zend 框架 : Apache decoding encoded URL instead of passing encoded URL?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:45:55 29 4
gpt4 key购买 nike

我正在使用 Selenium 和 PHPUnit 测试我的 Zend Framework 应用程序。我有一个测试需要打开一个包含编码 URL 的 URL。

$redirectToLocation = urlencode('/myothercontroller/action'); // %2Fmyothercontroller%2Faction
$this->openAndWait('/controller/action/thenRedirectTo/' . $redirectToLocation);

但是当我运行测试时,浏览器尝试打开解码后的 URL:

/controller/action/thenRedirectTo//myothercontroller/action

我应该怎么做才能让 selenium 打开编码后的 URL?

更新:实际上...事实证明 selenium 正在做它的工作,但似乎 Apache 在到达 Controller 之前解码 URL:

The requested URL /controller/action/thenRedirectTo//myothercontroller/action was not found on this server.

我该如何解决这个问题?

更新:这是关于我遇到的相同问题的完整对话:http://old.nabble.com/URL-Encoding-td18850769.html .他们的解决方法是对 url 进行 base64 编码,但这对我来说还不够好。我可能会在短期内使用这个解决方案,但我想知道这个问题的真正原因是什么,所以我可以消除它。

更新:我的一位同事认为 Zend Framework 路由请求的方式可能存在问题。你认为会是这样吗?

最佳答案

这是 Apache 的“特性”。编码的斜杠会自动解码并发送到应用程序 (php)。因此,它被识别为一个长 uri,而不是一个以编码 uri 作为参数的 uri。

不过,可以通过在您的配置中使用 AllowEncodedSlashes On 来关闭此功能。更多信息请访问 Apache manual .请注意此指令的上下文是服务器配置和虚拟主机,因此您不能将其放在 .htaccess 文件中。

关于php - Zend 框架 : Apache decoding encoded URL instead of passing encoded URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3935527/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com