如何绕过Access

我正在他们设置的平台上对我自己的服务器执行ajax调用,以防止这些ajax调用(但我需要它从我的服务器获取数据以显示从我的服务器数据库中检索到的数据)。 我的ajax脚本正在工作,它可以将数据发送到我的服务器的php脚本以允许它处理。 但是由于它被"Access-Control-Allow-Origin"阻止,它不能获取处理的数据。

我无法访问该平台的源/内核。 所以我不能删除不允许我这样做的脚本。 (P / SI使用Google Chrome的控制台并发现此错误)

Ajax代码如下所示:

 $.ajax({
     type: "GET",
     url: "http://example.com/retrieve.php",
     data: "id=" + id + "&url=" + url,
     dataType: 'json',   
     cache: false,
     success: function(data)
      {
        var friend = data[1];              
        var blog = data[2];           
        $('#user').html("<b>Friends: </b>"+friend+"<b><br> Blogs: </b>"+blog);

      } 
  });

或者是否有与上述ajax脚本相当的JSON代码? 我认为JSON是允许的。

我希望有人能帮助我。


把它放在retrieve.php的顶部

 header('Access-Control-Allow-Origin: *');  

请注意,必须在发送任何实际输出之前调用header() ,这一点很重要。

错误

<html>
<?php
header('Access-Control-Allow-Origin: *'); 
?>

正确

<?php
header('Access-Control-Allow-Origin: *'); 
?>
<html>

好的,但你们都知道*是通配符,并且允许来自每个域的跨站点脚本?

为什么不把自己的,可信任的域名(和协议)列入清单;

 header('Access-Control-Allow-Origin: http://mysite1.com', false);
 header('Access-Control-Allow-Origin: http://example.com', false);
 header('Access-Control-Allow-Origin: https://www.mysite2.com', false);
 header('Access-Control-Allow-Origin: http://www.mysite2.com', false);

这更安全。 (第二个参数“false”告诉header()函数不覆盖旧的)

为什么更安全?

允许从其他位置访问,那么您自己的可信站点允许会话劫持。 我将举一个小例子 - Facebook允许通配符来源 - 这意味着您可以在某个地方创建自己的网站,并使其向Facebook发起AJAX调用(或打开iframe)。 这意味着您可以抓取您网站访问者的Facebook登录信息。 更糟糕的是,您可以在浏览您的网站时脚本POST请求并在某人的Facebook上发布数据。

使用ACAO标头时要非常小心!


警告 ,Chrome(和其他浏览器)会抱怨说,如果您遵循其他一些答案,则会设置多个ACAO标头。

错误将会像XMLHttpRequest cannot load ____. The 'Access-Control-Allow-Origin' header contains multiple values '____, ____, ____', but only one is allowed. Origin '____' is therefore not allowed access. XMLHttpRequest cannot load ____. The 'Access-Control-Allow-Origin' header contains multiple values '____, ____, ____', but only one is allowed. Origin '____' is therefore not allowed access.

尝试这个:

$http_origin = $_SERVER['HTTP_ORIGIN'];

$allowed_domains = array(
  'http://domain1.com',
  'http://domain2.com',
);

if (in_array($http_origin, $allowed_domains))
{  
    header("Access-Control-Allow-Origin: $http_origin");
}
链接地址: http://www.djcxy.com/p/8005.html

上一篇: how to bypass Access

下一篇: Why does JSON.parse fail with the empty string?