【问题标题】:Laravel Guzzle Zillow API call returns "You don't have permission to access on this server" live server but works fine locallyLaravel Guzzle Zillow API 调用返回“您无权访问此服务器”实时服务器,但在本地运行良好
【发布时间】:2017-10-28 14:24:07
【问题描述】:

我在 laravel 5.4 中使用 Guzzle 编写了一个连接到 Zillow api 的小应用程序。

这一切都很好,直到我将它部署到实时服务器,此时我得到了

您无权访问此服务器上的 /webservice/GetDeepSearchResults.htm。

从gizzle catch返回。

如果我将 url 从 zillow 更改为 www.google.com,它 gizzle 会返回响应。

如果我将 zillow url 复制粘贴到浏览器中,它会给我正确的 xml 响应。

这是一个新的实时部署,虚拟主机目录指向站点“public/index.php/”

这可能是什么原因。在这一点上我有点难过。此错误的所有其他实例似乎是由指向错误目录的虚拟主机或 apache 配置文件引起的。

所以我的问题是,如果我在 ubuntu 上托管一个域

var/www/domain.com/public_html/laravel/

并指向该域的 virtualhost.conf 文件中的“var/www/domain.com/public_html/laravel/public/index.php”,我还必须在哪里指向该位置才能使其工作?这是此服务器上唯一的域。

任何指向我正确方向的线索将不胜感激。

编辑 这是用于拨打电话的地址。

$addressf = "http://www.zillow.com/webservice/GetDeepSearchResults.htm?zws-id=X1-APIKEY&address=".$addressf;

$addressf 包含用于测试的有效 http 解析地址。此地址在浏览器中可以正常工作,但在本地机器上除外。

这是返回错误的实际捕获

try {
    $response = $client->get($addressf);
      //$response = $client->post($this->url, $params);
  } catch (\GuzzleHttp\Exception\ClientException $e) {

    var_dump($e->getResponse()->getBody()->getContents());

  }

希望对您有所帮助。

【问题讨论】:

  • 您能展示发出请求的代码吗?您可以转储您尝试访问的网址吗?
  • 完成,希望对您有所帮助
  • zillow 可能已经阻止了您服务器的 IP 地址。您可以尝试 ssh'ing 到您的服务器并使用 wget 访问网址吗?
  • 你是对的。当我从服务器上的 ssh 终端获取 wget 时,我得到了相同的禁止响应!我已经把这种可能性写下来了。我想现在我只需要找出为什么/如何解锁它。谢谢帕特里克斯!
  • 当然可以。我为您发布了一个快速答案。

标签: laravel api guzzle


【解决方案1】:

您收到的响应来自 Zillow,因此与您的服务器设置方式无关。

我的猜测是 Zillow 已经阻止了你的实时服务器,所以你得到的是直接的 403 响应,甚至没有带有错误代码的 API 响应。

如果您使用的是共享主机,则您可能会在解锁 IP 地址时遇到问题,因为它很可能会阻止您的邻居之一的不当访问。如果它是专用主机,您可能会有更好的运气,但需要确保您在他们的使用条款范围内操作,这样您就不会再次被阻止。无论哪种方式,您都需要与 Zillow 联系以解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 2017-06-16
    • 2014-02-25
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多