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

我正在尝试使用 this Tread 中所见的 javascript 和 PHP 代理来使用第三方 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 内部。

标签: javascript php proxy http-status-code-403


【解决方案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 类型检查。有办法解决吗?
【解决方案2】:

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

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

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

【讨论】:

  • 谢谢!我知道这一点,这就是我尝试使用服务器端连接的原因,因此 PHP 代理,干杯!
猜你喜欢
  • 2016-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 2019-04-14
  • 2012-12-24
相关资源
最近更新 更多