Ajax 跨域 PHP 代理 403 错误

Posted

技术标签:

【中文标题】Ajax 跨域 PHP 代理 403 错误【英文标题】:Ajax Cross-domain Php proxy 403 error 【发布时间】:2016-12-26 20:10:35 【问题描述】:

我正在尝试使用 this Tread 中所见的 javascriptphp 代理来使用第三方 Api,我可以使用代理,但我得到的响应始终是:

加载资源失败:服务器响应状态为 403(禁止) http://MYDOMAIN.co/php/ba-simple-proxy.php?url=http://jsonplaceholder.typicode.com/posts&_=1471620448707

我的 javascript 代码是:

function getLocationSimple()
var proxy = 'php/ba-simple-proxy.php',
    url = proxy + '?url=' + 'http://jsonplaceholder.typicode.com/posts';
    console.log(url);
// Make JSON request.
  $.getJSON( url, function(data)

    console.log(data);
  );

我以为是关于第三方服务器的权限,所以我决定将其更改为开放的-http://jsonplaceholder.typicode.com/posts-,但我仍然遇到同样的错误,可能是我自己的服务器中的权限? -我的主机是hostgator-

【问题讨论】:

http 403错误可能是由于多种原因,您可以查看更多here。问题不在您的 getLocationSimple 脚本中,而可能在 php/ba-simple-proxy.php 内部。 【参考方案1】:

让我们试试这段代码

function getLocationSimple()
            $.ajax(
                type: 'POST',
                dataType: 'jsonp',
                url: "http://jsonplaceholder.typicode.com/posts"
            )  .done(function( data ) 
                console.log( data);
              );
        

这是由于跨域策略造成的。 api端不支持跨站访问。所以我们可以使用dataType: 'jsonp' 来解决这个问题

【讨论】:

非常适合我选择的示例!但是,当我在现实生活中的提供程序中使用它时遇到了一个新错误 - > 拒绝执行来自 htttp://XXXXX 的脚本,因为它的 MIME 类型('application/json') 不可执行,并且启用了严格的 MIME 类型检查。有办法解决吗? ***.com/questions/24528211/…【参考方案2】:

这与跨域策略有关。由于安全原因,您不能向另一个域发出 ajax 请求,因为恶意攻击还可能涉及通过 ajax 发出请求以加载额外的脚本来攻击您。

尽管 Wikipedia 可能不是提供的最佳链接,但它会给你一个想法。

https://en.wikipedia.org/wiki/Same-origin_policy

【讨论】:

谢谢!我知道这一点,这就是我尝试使用服务器端连接的原因,因此 PHP 代理,干杯!

以上是关于Ajax 跨域 PHP 代理 403 错误的主要内容,如果未能解决你的问题,请参考以下文章

同一域上的ajax跨域错误?

admin-ajax.php?action=woocommerce_feature_product 403 错误

通过ajax发送数据时Codeigniter 403禁止错误

在 CodeIgniter 中使用 ajax 出现 403 禁止错误

发出 ajax Post 请求时出现 403 禁止错误

解决ajax跨域的办法,代理,cors,jsonp