带有php代理的跨域Ajax POST请求

时间:2018-08-23 13:08:41

标签: javascript php ajax proxy

首先,我已经读过this answer,它是通过php proxy进行跨域Ajax GET请求的。但是我需要的是Ajax POST请求。

所以很久以前在我的项目中。有人用JavaScript编写了这个php文件以及ajax调用,这些都是解决跨源问题的方法,而且效果很好!因此,我从来没有想过要理解它,因为我基本上只需要更改JavaScript中的url,并且不需要了解此Ajax调用如何与php一起使用。

PHP:

<?php
$nix="";
$type=$_GET['requrl'];
if ($_GET['requrl'] != $nix) {
    $file = file_get_contents($_GET['requrl']);
}
elseif ($_POST['requrl'] != $nix) {
    $file = file_get_contents($_POST['requrl'], false, $_POST['data']);
}
else {
    $file = "false type";
}
echo $file;
?>

JavaScript:

var url = "https://XXXXXXXXXXXXXX";
url = encodeURI(url); 
var useProxyPhp = true;
    var data = (useProxyPhp) ? {requrl: url} : "";
    var ajaxUrl = (useProxyPhp) ? "proxy.php" : url;

var ajaxProperties = {
    type: 'GET',
    data: data,
    url: ajaxUrl,
    cache: false 
};

res = jQuery.ajax(ajaxProperties).done(function(res) {
    // do something with the result here
})

因此,我需要做的就是接受相同的ajax GET请求(复制并粘贴到JS中),并在每次==>工作完成时都替换URL!

现在,我第一次需要执行ajax POST请求以将xml文件发送到服务器时,服务器将对其进行一些计算并给出响应。

我先用POSTMAN测试,一切正常,但是当我切换到实际项目时。我成为跨源问题。所以我想,如果我可以对已经存在的php和js做些什么,那么我就可以解决跨源问题。

我在JavaScript中尝试了此方法,但只有“错误类型”作为匿名提示

function sendWPSRequest(xml) {
var url = "https://XXX.XXX.XXX.XXX:XXXX/wps";
useProxyPhp = true;
    var data = (useProxyPhp) ? {requrl: url, data: xml} : "";
    var ajaxUrl = (useProxyPhp) ? "proxy.php" : url;

$.ajax({
    type: "POST",
    url: ajaxUrl,
    dataType: "text",
    contentType: "application/xml",
    data: data,
    success:function (response) {
        console.log('POST success: ', response);
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert("POST", textStatus, errorThrown);
    }
});
}

有人可以帮助我一点了解php在这里做什么,以及我应该怎么做才能修改php和JS。

0 个答案:

没有答案