2012-08-01 74 views
-1

我有这个问题的问题:访问控制允许来源。访问控制允许源服务器端由php

我读到它,我发现这是可能使用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']); 
?> 

并没有什么happends。我试图与阿贾克斯,是这样的:

$.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作为本地主机。我有2台服务器,网页(在XAMPP)和休息(在Tomcat中)

+0

你在哪里设置'Access-Control-Allow-Origin',你需要它在哪里? – Musa 2012-08-01 10:14:02

回答

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']]); 

通常你会想要做更多的只是转换一个动作一个网址,你可能想传递额外的参数。在这种情况下,您可以使用一个开关或一堆IF来检查$ _GET ['do']是否等于某个值,然后对其进行处理。但是需要几个小时才能给出每种可能的实现方法的示例,因此您可能需要使用google。

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

+0

上帝......现在它给了我一个关于Ajax的错误没有定义....有没有办法让它安全?我可以更改服务器中的所有参数...只是允许一些地址或类似的东西。 – user1298272 2012-08-01 10:35:05

+0

Ajax未定义可能是因为您没有包含实现该对象/函数的库。就我个人而言,我坚持使用jQuery,但是如果你已经在该库下做了很多代码,或者jQuery不合适,你必须坚持下去。 我将添加一个编辑到我的文章如何保护它 – Lee 2012-08-01 10:38:00

+0

随着jquery,这将是我写的上,不是吗? $ .ajax ....现在它正在工作,非常感谢!我收到我想要的。 – user1298272 2012-08-01 10:40:18