2016-04-15 43 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

相關問題