首先,我已经读过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。