从浏览器客户端 javascript 调用 Easypost API
Calling Easypost API from browser client javascript
我正在尝试从 javascript/jquery 调用 Easypost API(是的,我知道这是一个 "bad" 想法,因为 JS 代码包含明文帐户密钥,但是这个 JS 和 HTML 位于我们网站的安全部分,仅供特别授权的人员使用)。
我的电话是这样的:
$.ajax({
url: uri,
type: "POST",
data: JSON.stringify(data),
contentType: "application/json",
headers: {
"Authorization": "Basic " + btoa(username + ":" + password)
},
success: function(result) {...},
error: function(...) {...}
});
它 returns 404 和 Chrome 显示此错误:
加载失败https://api.easypost.com/v2/shipments: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost'因此不允许访问。响应具有 HTTP 状态代码 404。
这可能吗?
这意味着 easypost API 服务器不接受 CORS 请求或来自 localhost
的请求。
根据他们的文档,他们只提供服务器端库来与他们的 API 进行交互。我的猜测是您将无法从您的网络应用程序直接与它交互。
最好的办法是使用代理,您可以自己开发一个代理或使用 node-http-proxy 之类的东西来代理您的 API 调用。 (有 php 或 python 等价物)
代理服务器将能够发出请求,然后将它们转发到您的应用程序。
建议进一步阅读:在 google 上键入 understanding CORS 并阅读更多相关信息。
我正在尝试从 javascript/jquery 调用 Easypost API(是的,我知道这是一个 "bad" 想法,因为 JS 代码包含明文帐户密钥,但是这个 JS 和 HTML 位于我们网站的安全部分,仅供特别授权的人员使用)。
我的电话是这样的:
$.ajax({
url: uri,
type: "POST",
data: JSON.stringify(data),
contentType: "application/json",
headers: {
"Authorization": "Basic " + btoa(username + ":" + password)
},
success: function(result) {...},
error: function(...) {...}
});
它 returns 404 和 Chrome 显示此错误:
加载失败https://api.easypost.com/v2/shipments: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost'因此不允许访问。响应具有 HTTP 状态代码 404。
这可能吗?
这意味着 easypost API 服务器不接受 CORS 请求或来自 localhost
的请求。
根据他们的文档,他们只提供服务器端库来与他们的 API 进行交互。我的猜测是您将无法从您的网络应用程序直接与它交互。
最好的办法是使用代理,您可以自己开发一个代理或使用 node-http-proxy 之类的东西来代理您的 API 调用。 (有 php 或 python 等价物)
代理服务器将能够发出请求,然后将它们转发到您的应用程序。
建议进一步阅读:在 google 上键入 understanding CORS 并阅读更多相关信息。