通过php访问控制允许Origin服务器端


Access-Control-Allow-Origin server side by php

我对以下主题有问题:访问控制允许原点。

我读过它,我发现使用php可以得到响应,这里是

但我不知道如何将代码适应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作为本地主机。我有两个服务器,网页(在examplep中)和其余(在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']是否等于某个值,然后进行处理。但要给出每种可能的实现方法的示例需要几个小时,所以你可能想使用谷歌。

请注意:虽然建议使用此方法为脚本增加100倍的安全性,但它是不可调用的,尤其是当您也开始传递用户的参数时。再次使用谷歌。