2016-04-15 46 views
0

我正尝试使用jQuery XHR向Zillow上的API发送一个简单的GET请求。我可以在我的浏览器和Postman中看到请求正确返回。我在下面检查了我的API密钥 - 但请求并不简单。API端点资源上没有访问控制允许源标头

$.ajax({ 
      url: 'http://www.zillow.com/webservice/GetMonthlyPayments.htm?zws-id=<APIKEY_GOES_HERE>&zip=89509&output=json&price=300000&down=25', 
      success: function(data){alert('done');}, 
      dataType: 'json' 
      }); 

我可以在控制台看到,它通过本地主机或服务器上的标准跨域错误返回。

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '<MY-DOMAIN>' is therefore not allowed access. 

Response Headers

我用过许多API这样的,我不明白 - 是不是真的那么愚蠢?他们公开API但不允许CORS?这对我来说没有任何意义,我想我一定会错过一些明显的东西。

  • 由于末尾有些不明确的情况,我是否必须预检?
  • 如果他们真的不允许CORS,谁能帮我理解这个端点的目的吗?
  • API记录非常好here

谢谢堆栈。感谢你的帮助。


编辑:如果你想看看我所看到的,你可以get an API key没有汗水。

+0

有许多没有CORS的API。它们并不是直接用Javascript来使用,或者他们根本不在乎。有些人甚至不理解这个概念。我一直在问一个相当有名的网站,让他们的API可用于CORS,并且他们问了我两次,如果它起作用的话,那么它不会。我不得不告诉他们如何从浏览器自己测试它。 –

+0

谢谢你。你是对的 - 为此开发一个解决方案,我将不得不在我的域中作为代理服务器方法。废话。 – jdbiochem

回答

1

看起来他们有禁止的CORS。你需要做的是建立你自己的服务器,使其击中Zillow的端点,并使用AJAX在你自己的服务器上击中该路线。我相信这样做的目的是压制CSRF,因此用户的cookies不会发送到Zillow,因为它正在通过您的服务器,而不是从浏览器直接访问Zillow。

+0

这是正确的。令人惭愧的是,我能够确定另一个问题,即为Zillow API提供完全相同的问题。我将遵循您的建议并制作一个提取页面的服务器方法。 – jdbiochem

相关问题