我遇到了以下问题:Access-Control-Allow-Origin。
我读到了它,我发现可以使用php here
获得响应但是我不知道如何使代码适应javascript,我仍然有同样的问题。
我在javascript中试过这个:
var url ='http://localhost:8080/com.webserver/rest/manage/order?parameter=parameter';
req=Ajax("getResponse.php/?" + url)
if (req.status=200)
alert("hi");
在php文件中:
<?php
echo file_get_contents($_GET['url']);
?>
没有任何事情发生。我尝试使用ajax,例如:
$.ajax({
url: "http://localhost:8080/com.webserver/rest/manage/order?parameter=parameter",
async: false,
dataType: 'html',
success: function (text) {
alert(text);
}
});
但总是同样的问题......
我在网上看到很多人有同样的问题,但没有人得到回应。我刚刚找到了两种方法,使用chrome和一个选项,但只是建议开发人员在服务器上添加标题,但我不知道在哪里添加它们。我正在使用apache tomcat catalina for localhost。我有2个服务器,网页(在xampp中)和休息(在tomcat中)
答案 0 :(得分:1)
更改
req=Ajax("getResponse.php/?" + url)
到
req=Ajax("getResponse.php/?url=" + url)
请记住这是不安全的,我可以将任何内容传递给url参数,你的php脚本会使用它。允许人们从本地系统读取文件,并让你的php脚本从其他地方下载恶意文件
编辑:
要获得保护的最佳方法是使用操作列表,这意味着用户永远不会看到该网址,只能修改操作字。例如
req=Ajax("getResponse.php/?do=getOrders")
然后在php
$actions = array();
$actions['getOrders'] = "http://localhost:8080/com.webserver/rest/manage/order?parameter=parameter";
if(array_key_exists($_GET['do'], $actions))
echo file_get_contents($actions[$_GET['do']]);
通常你想做更多只是将动作转换为url,你可能想要传递其他参数。在这种情况下,您可以使用一个开关或一堆IF来检查$ _GET ['do']是否等于某个东西然后处理它。但是需要几个小时来举例说明每种可能的实施方法,所以你可能想要使用谷歌。
请注意:虽然建议使用此方法为脚本增加100倍的安全性,但它不会泄漏,特别是如果您也开始传递用户的参数。再次使用谷歌。