【问题标题】:passing http url as an get method variable - how to?将 http url 作为 get 方法变量传递 - 如何?
【发布时间】:2011-05-06 11:30:35
【问题描述】:

我正在尝试这样做:

http://somehost.net/edit.php?url=http://www.youtube.com/watch?v=EgHY53dOZ-U

禁止

您无权访问此服务器上的 edit.php。

有没有办法通过 javascript(jquery) 解决这个问题,因为我正在通过 ajax 调用传递参数。

我尝试过这种方式但没有成功:

$('#videofrm').load('edit.php?url='+encodeURI($(this).siblings('a').attr('href'))

【问题讨论】:

  • 您是否尝试过修复权限问题?
  • 我给了你一个带有 urlEncode 功能的网站.. 尝试使用那个。因此,如果您在没有任何 $_GET 参数的情况下加载它,页面会显示什么?
  • 可以发一下处理$_GET['url']的部分吗?
  • 顺便说一句,这种东西是encodeURIComponent 而不是encodeURI
  • @daniel.tosaba:edit.php 是做什么的?

标签: query-string apache


【解决方案1】:

您应该修复服务器上的 chmoding 问题。

编辑

你的edit.php在做什么?如果它重定向到其他地方?然后在重定向之前回显结果 url。

如果您愿意/可以重写 .htaccess,可以关注 Tomalak Geret'kal。否则您需要传递不带http:// 部分的url,并在edit.php 上添加http://

【讨论】:

  • 现在断定这只是一个文件系统权限问题还为时过早。
  • 我为什么要修复任何东西?如果我放一些其他格式变量,如 url=stackoverlow 一切正常
  • 你也应该在你的问题中提到同样的问题
  • 如果网址开头有http://,那么只有它显示403和404。希望你得到提示
  • 在不关闭 http 部分的情况下如何解决?
【解决方案2】:

如果您没有访问edit.php 的权限,那么您尝试通过多少种不同的方式请求它并不重要:您没有权限。

修复服务器上的权限,如果服务器在 Linux 上,可能使用chmod


更新

您有服务器配置问题。我只能在查询字符串中传递字符串:// 时复制问题。

尝试按照this question/answer 在您的httpd 配置中写入AllowEncodedSlashes On

然后,您需要确保正确编码 URI:

http://somehost.net/edit.php?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv=EgHY53dOZ-U

(看起来你的encodeURI 电话应该处理那部分)

AllowEncodedSlashes allows 斜杠只要经过编码,就会出现在查询字符串中,出于某种原因,默认情况下 不是。文档说失败会产生 404,而不是 403,但我仍然认为这是原因。

如果您无法操作网络服务器的配置选项,解决方法包括:

  • http:// 选择一个替代术语,例如http!!!,您将在PHP 脚本中以编程方式还原该术语;
  • 如果您总是使用http://(而不是ftp:// 或某个本地路径),只需将其完全从查询字符串中删除,并将其添加到PHP 中的输入之前脚本(首选解决方法)

希望对您有所帮助。

【讨论】:

  • 我为什么要修复任何东西?如果我放一些其他格式变量,如 url=stackoverlow 一切正常
  • @daniel.tosaba:我觉得这不太可能,除非edit.php 执行 HTTP 重定向。是吗?
  • 它没有。它只需要给定的数据,所以它可以做一些数据库的东西
  • @daniel.tosaba:这太了不起了。为了解决这个问题,我们需要确切地知道您的edit.php 正在做什么,以及您可能拥有的任何.htaccess 定义。我们只是没有足够的信息。
  • 非常感谢您的宝贵回答。我刚刚发现我的帐户类型不允许这样做,所以我将不得不做一些诡计的工作。再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 2020-12-18
  • 1970-01-01
  • 2021-06-07
  • 2014-06-05
  • 2012-07-07
相关资源
最近更新 更多