2017-03-15 55 views
-1

我正在構建一個獨立的JavaScript應用程序(React + Redux是特定的)。我使用Shopify購買SDK獲得巨大成功,從我的Shopify商店購買。但是,由於我需要使用[Shopify API] [2]來添加Buy SDK不支持的產品和其他高級功能。在前端使用Shopify API

我可以成功地從服務器端連接到Shopify API(使用NodeJS),但是當我嘗試在前端執行相同的連接時(我當然通過我的.env檢索應用程序密鑰和祕密令牌出於安全原因,環境變量):

axios.get('https://<app-key>:<app-password>@rmc-preview.myshopify.com/admin/orders.json').then((data) => { 
    console.log('data: ', data); 
}); 

,然後我得到一個「訪問控制允許來源」錯誤:

XMLHttpRequest cannot load https://rmc-preview.myshopify.com/admin/orders.json . No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:3000 ' is therefore not allowed access. The response had HTTP status code 401.

我想既通過我的本地連接,以及我的公共站點(目前通過Netlify託管)。

是否需要通過服務器端連接此API,還是完全可以通過前端進行連接?

欣賞您的任何提示或建議。

+0

該端點是否支持jsonp? – Rooster

+0

我現在要問Shopify。 –

回答

0

對於所有安全問題,您不能在Shopify前端調用這樣的事情。 CORS和東西。您需要通過可以利用API的後端應用程序路由請求。

Node.js是你正在看的東西。

+1

沒關係CORS問題。從面向公衆的代碼考慮訪問API是一個可怕的想法,因爲它暴露了API的祕密。要完成任何API shenanigans,請安裝一個App,然後使用內置的安全App Proxy模式來代理您的前端呼叫。 –

+0

謝謝David!我實際上並沒有向公衆公開任何API祕密,因爲它們是在.env文件中定義的 - 無論是本地主機還是在活動服務器上。這就是爲什麼我認爲通過前端完成可能是可行的。 –