我希望通过rest api访问wp woocommerce上的数据。我试图用curl获取数据并且它正在工作。 curl https://${sec_key}:${customer_secret}@exmpl.com/wp-json/wc/v1/orders
,但现在我需要使用Angular 2 http服务进行访问。是不可能的?
答案 0 :(得分:0)
当您将用户名和密码放在网址中时
https://${sec_key}:${customer_secret}@exmpl.com
它只是在幕后操作Basic Authentication,它基本上只是一个Authorization
标题,其值为
Authorization: base64(username:password)
这里,base64
只是base-64编码username:password
的一些任意函数;这是用冒号分隔的用户名和密码。在Javascript中,有一个全局btoa
函数,它将为你编码字符串。
所以在Angular中,你可以做到
const headers = new Headers({
'Authorization': btoa(secKey, custSecret)
})
http.get(url, { headers: headers })
但这是问题所在。你正在揭露(我假设)你给客户的秘密信息,你永远不应该这样做。另外,您需要确保API甚至允许从Javascript客户端发送is请求。某些API,尤其是传递敏感信息的API,不允许直接进行Javascript(客户端)通信。他们这样做是因为不允许Cross Origin requests。
因此,您需要确保API甚至接受来自客户端应用程序的Cross Origin请求,其次您需要考虑在客户端应用程序中使用您的秘密的含义。
我从未使用过Woocommerce,我也不知道它到底是什么。但如果它与商业有关,我可能会认为它应该连接到服务器到服务器。这是你应该考虑的事情,或者甚至是你 要做的事情。因此,您基本上可以从您的客户端应用程序与您的服务器应用程序进行通信,然后与API进行通信。