我对这个主题有疑问: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);
}
});
但总是同样的问题....
我在网上看到很多人有同样的问题,但没有人得到回应。我刚刚找到了 2 种方法,使用 chrome 和一个选项,但只是推荐给开发人员并在服务器上添加 header ,但我不知道在哪里添加它们。我正在为该本地主机使用 apache tomcat catalina。我有 2 个服务器,网页(在 xampp 中)和休息(在 tomcat 中)
最佳答案
改变
req=Ajax("getResponse.php/?"+ url)
到
req=Ajax("getResponse.php/?url="+ url)
切记这是不安全的,我可以将任何内容传递到 url 参数中,您的 php 脚本将使用它。允许人们从您的本地系统读取文件以及让您的 php 脚本从其他地方下载恶意文件
编辑:
保护它的最佳方法是使用操作列表,这意味着用户永远看不到 url,只能修改操作词。例如
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'] 是否等于某个值,然后对其进行处理。但是给出每个可能的实现方法的示例需要几个小时,因此您可能需要使用 google。
请注意:虽然建议使用此方法为您的脚本增加 100 倍的安全性,但它并非万无一失,尤其是当您也开始传递来自用户的参数时。再次使用谷歌。
关于php - 访问控制允许源服务器端由 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11757001/