PHP AJAX代理未返回POST请求的正文

PHP AJAX代理未返回POST请求的正文,php,ajax,http,post,proxy,Php,Ajax,Http,Post,Proxy,我将此AJAX代理用于跨域AJAX请求:。当我使用GET时,效果非常好。但当我尝试使用POST时,主体似乎丢失了,并且从未打印出来。我试着打印日志并研究了代码,但我不知道出了什么问题。 谢谢, 艾萨克·沃勒 编辑:以下是我正在使用的代码: $.post("proxy.php?proxy_url=http://www.google.com", { postvar1: "hello", postvar2: "goodbye" }, function(data){ alert(data);

我将此AJAX代理用于跨域AJAX请求:。当我使用GET时,效果非常好。但当我尝试使用POST时,主体似乎丢失了,并且从未打印出来。我试着打印日志并研究了代码,但我不知道出了什么问题。
谢谢,
艾萨克·沃勒

编辑:以下是我正在使用的代码:

$.post("proxy.php?proxy_url=http://www.google.com", { postvar1: "hello", postvar2: "goodbye" },
  function(data){
    alert(data);
  },"text");

即使我制作了一个简单的表单并对其进行了测试,也没有输出结果。

请在失败的页面上发布html/javascript

您引用的脚本需要查询字符串$\u GET中的参数,还可以选择post中的参数,它只传递这些参数

除非您修改了该脚本,否则它将无法工作,除非您在查询字符串中有信息

但是,您可以在同一请求中同时使用get和post

e、 g

请注意,使用的url包括查询字符串参数,并使用带有参数的post

或者在jQuery中:

$.post("proxy.php?proxy_url=http://www.google.com", { postvar1: "hello", postvar2: "goodbye" },
  function(data){
    alert(data);
  },"text");
或在原型中:

 var http = new Ajax.Request("proxy.php?proxy_url=http://google.com", 
     { method: "post", 
       parameters: { postvar1:"hello", postvar2: "goodybe"}, 
       onSuccess: function(text) { alert(text);}
     });

不要相信我的话,但你不能跨域Ajax。有如中所述的变通方法,但纯ajax是不可能的。

尝试以下方法:

$.post("/proxy.php", {proxy_url: "http://www.google.com", postvar1: "hello", postvar2: "goodbye" },
  function(data){
    alert(data);
  },"text");
当我尝试您的原始版本时,它返回了一个错误405,但上面的方法有效。JQUERY或proxy.php都不喜欢混合post和get参数

编辑:


我确实找回了一个页面,我可以在警报框中显示它,但它看起来与我预期的完全不同。我在一些带有发布的联系人表单的站点上尝试了相同的代码,结果正如预期的一样。

proxy.php脚本可能有问题,因此它只在使用GET时返回一些内容。也许您从php脚本中的$\u get而不是$\u request获取请求数据?或者谷歌就是不回答POST请求。在这种情况下,您可能需要将帖子翻译为GET

离题:如果您只想代理几个受信任的域,请小心不要成为web上所有内容的代理。

更改此行

$proxy_url = isset($_GET['proxy_url'])?$_GET['proxy_url']:false;
对此

$proxy_url = isset($_GET['proxy_url']) ? $_GET['proxy_url'] : (isset($_POST['proxy_url']) ? $_POST['proxy_url'] : false);
这将解决服务器端问题

但是,当您通过jQuery发出请求时,需要选择GET或POST。目前,除了过帐参数之外,您还通过查询字符串传递代理URL来使用这两者的组合。这将失败,但很容易修复

$.post("/proxy.php", {proxy_url: "http://www.google.com", foo: "bar" }, function(dat) {
  alert(dat);
});

用$\请求替换PHP文件中的所有$\ GET变量

标题是什么?“那边有白人吗?@Itay Moav:我不明白你的问题-请你重新措辞好吗?我知道,我在使用代理,这就是问题所在。
$.post("/proxy.php", {proxy_url: "http://www.google.com", foo: "bar" }, function(dat) {
  alert(dat);
});