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

发布于 2024-11-05 10:50:12 字数 354 浏览 0 评论 0原文

我正在尝试执行此操作:

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

I am trying to do this:

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

Forbidden

You don't have permission to access edit.php on this server.

Is there a way to fix this through javascript(jquery), cause I am passing argument through ajax call.

I have tried it this way but without success:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

看海 2024-11-12 10:50:12

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

编辑

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

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

You should fix the chmoding issues on the server.

Edit

What your edit.php doing ? If it redirecting to somewhere else ? then echo the result url before redirecting.

You can follow Tomalak Geret'kal if you want/can rewrite the .htaccess. otherwise you need to pass the url without the http:// part and prepend an http:// on edit.php

相守太难 2024-11-12 10:50:12

如果您没有访问 edit.php 的权限,那么无论您尝试以多少种不同的方式请求它都没有关系:您没有权限。

修复服务器上的权限,如果服务器位于 Linux 上,则可能使用 chmod。


更新

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

尝试在 httpd 配置中写入 AllowEncodedSlashes On,按照 此问题/答案

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

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

看起来您的 encodeURI 调用应该处理该部分)

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

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

  • 选择一个 http:// 的替代术语,例如 http!!!,您可以通过编程方式使用它在 PHP 脚本中恢复;
  • 如果您总是使用http://(而不是ftp://或某些本地路径),则不要使用它整个查询字符串并将其添加到 PHP 脚本中的输入(首选解决方法)

希望有帮助。

If you don't have permission to access edit.php, then it doesn't matter how many different ways you try to request it: you don't have permission.

Fix the permissions on the server, likely using chmod if the server is on Linux.


Update

You have a server configuration issue. I can only replicate the problem when passing the string :// inside the querystring.

Try writing AllowEncodedSlashes On in your httpd config, as per this question/answer.

You will then need to make sure you encode your URI properly:

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

(it looks like your encodeURI call should take care of that part)

AllowEncodedSlashes allows slashes to be present in the query string as long as they're encoded which, for some reason, is not the case by default. The docs say that failure produces a 404, not a 403, but I still think that this is the cause.

If you are not able to manipulate configuration options for your webserver, workarounds include:

  • Choosing a stand-in term for http:// like http!!! that you will programmatically revert in the PHP script;
  • If you always use http:// (as opposed to, say, ftp:// or some local path), just leave it off the query string entirely and prepend it to the input in your PHP script (preferred workaround).

Hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文