【问题标题】:Access-Control-Allow-Origin server side by phpAccess-Control-Allow-Origin 服务器端由 php
【发布时间】:2012-08-01 18:44:42
【问题描述】:

我对这个主题有疑问: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 和一个选项,但只是推荐给开发人员并在服务器上添加标头,但我不知道在哪里添加它们。我正在为该本地主机使用 apache tomcat catalina。我有 2 个服务器,网页(在 xampp 中)和休息(在 tomcat 中)

【问题讨论】:

  • 你在哪里设置,Access-Control-Allow-Origin,你在哪里需要它?

标签: php javascript tomcat cross-domain


【解决方案1】:

改变

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 倍的安全性,但它并非万无一失,尤其是当您也开始传递来自用户的参数时。再次使用谷歌。

【讨论】:

  • 上帝......现在它给了我一个关于 Ajax 未定义的错误......有没有办法让它安全?我可以更改服务器中的所有参数......只允许一些地址或类似的东西。
  • 未定义 Ajax 可能是因为您没有包含实现该对象/功能的库。我个人坚持使用 jQuery,但如果您已经在该库下编写了很多代码,或者 jQuery 不适合您,您将不得不坚持使用它。我将在我的帖子中添加一个关于如何保护它的编辑
  • 使用 Jquery,就像我在上面写的那样,不是吗? $.ajax .... 现在它正在工作,非常感谢!我得到了我想要的。
猜你喜欢
  • 2016-07-29
  • 2019-02-13
  • 2014-06-07
  • 2017-05-11
  • 1970-01-01
  • 2014-11-27
  • 2020-10-18
  • 2017-06-15
  • 1970-01-01
相关资源
最近更新 更多