1

我将这个非常基本的 PHP 文件上传到www.example.com(非本地):

<?php
header('Access-Control-Allow-Origin: *');
echo $_POST['var1'];
?>

我在 Fiddler 中编写了一个简单的测试,如下所示

在此处输入图像描述

我得到了空白结果,没有返回。test1234它应该在 TextView中给我

在此处输入图像描述

我通过简单的$.ajax调用进行了测试,它可以在浏览器中运行。我也上传到另一个域名来测试跨域调用,它也可以。

$.ajax({
    type: "POST",
    url: "http://www.example.com/test.php",
    data: {var1: "test1234"}
}).done(function(msg) {
    console.log(msg);
});

但是,如果我将所有内容都交换为 GET(php,Fiddler),它就可以工作。那么为什么我不能让 Fiddler 传递 POST 参数呢?

4

1 回答 1

0

尽管评论中已经有一个非常简短的答案,但我只是遇到了同样的问题并想提供一个稍微长一点的解决方案/解释,因为乍一看我没有得到区别:

您的问题是 PHP 的$_GETand$_POST不映射到 HTTP 的GETand POST

...无论请求是通过 HTTPGET还是POST!

您的$.ajax测试有效,因为您通过请求正文传递了值。
您的 Fiddler 测试不起作用,因为您通过 URL 参数传递了值。


所以 Fiddler 有两种可能的解决方案:

  1. 通过 URL 传递参数,通过以下方式在 PHP 中获取值$_GET['id']

    得到

  2. 通过“请求正文”传递参数,使用上述内容类型之一,通过以下方式在 PHP 中获取值$_POST['id']

    邮政

于 2017-04-02T13:01:36.337 回答