传递http url作为get方法变量 - 如何?

时间:2011-05-06 11:30:35

标签: query-string apache

我正在尝试这样做:

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'))

2 个答案:

答案 0 :(得分:1)

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

修改

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

如果你想要/可以重写.htaccess,你可以关注Tomalak Geret'kal。否则你需要传递没有http://部分的网址,并在edit.php上添加http://

答案 1 :(得分:0)

如果您无权访问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://的{​​{1}}的替代术语,您将在PHP脚本中以编程方式还原;
  • 如果您总是使用http!!!(而不是http://或某个本地路径),请将其完全从查询字符串中删除,并将其添加到输入PHP脚本(首选解决方法)

希望有所帮助。