2014-01-19 180 views
1

我努力讓自己在易趣交易API一個「GetOrders」號召,我得到CORS錯誤:易趣交易API CORS問題

的XMLHttpRequest無法加載https://api.ebay.com/ws/api.dll。 請求的 資源上沒有「Access-Control-Allow-Origin」標題。原因''因此不允許 訪問。

這些標題:

請求URL:https://api.ebay.com/ws/api.dll,請求方法:OPTIONS

Status Code:200 OK Request Headersview source Accept:*/* 
Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 
Access-Control-Request-Headers:x-ebay-api-siteid, x-ebay-api-dev-name, content-type, x-ebay-api-cert-name, accept, x-ebay-api-request-encoding, x-ebay-api-call-name, x-ebay-api-app-name, x-ebay-api-compatibility-level 
Access-Control-Request-Method:POST Connection:keep-alive 
Host:api.ebay.com Origin:<mydomain.com> 
Referer:<mydomain.com> User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36 

響應頭:

Allow:GET, HEAD, POST, TRACE, OPTIONS 
Connection:keep-alive 
Content-Length:0 
Date:Sun, 19 Jan 2014 18:15:10 GMT 
Server:Apache-Coyote/1.1 
X-EBAY-ESB-GUID:urn:uuid:UUIDDDODSDFLSDKLSDKFJKS 
X-EBAY-ESB-SITEID:0 

是否易趣需要明確 「允許」 我CORS域名?我搜索了互聯網和eBay API文檔,但沒有任何跡象表明這一點。如果我使用curl,API調用已成功運行,但eBay交易API不返回「Access-Control-Allow-Credentials:true」。

回答

2

實際上,所有瀏覽器都強制執行CORS standard中描述的跨源資源共享限制,其中包括髮送預檢選項請求,如您所見。該檢查並非強制性的,儘管非瀏覽器用戶代理(如curl,Android/iOS HTTP客戶端等)通常不會執行此檢查。

沒有允許特定域進行跨域資源請求的eBay開發人員進程。對於不同的API,CORS的支持有點不統一。例如,查找API調用findItemsByKeywords可以很好地跨域(請參閱here),而其他服務不允許它(請參閱非常舊但尚未解答的請求here)。

這不是一個好的答案,但您可以隨時使用後端代理來撥打電話。通過這種方式,您的後端可以使用curl或類似方式進行調用,而且您還可以從本地檢查您的javascript中隱藏您的appID,用戶令牌和其他祕密。

您可能還想向eBay提交請求,但其中一些票已經有一段時間了。