【问题标题】:Calling Easypost API from browser client javascript从浏览器客户端 javascript 调用 Easypost API
【发布时间】:2018-01-24 09:56:39
【问题描述】:

我正在尝试从 javascript/jquery 调用 Easypost API(是的,我知道这是一个“坏”的想法,因为 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(...) {...}
 });

它返回 404 并且 Chrome 显示此错误:

无法加载 https://api.easypost.com/v2/shipments:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'https://localhost' 不允许访问。响应的 HTTP 状态代码为 404。

这可能吗?

【问题讨论】:

    标签: javascript jquery easypost


    【解决方案1】:

    这意味着easypost API服务器不接受CORS请求或来自localhost的请求。

    根据他们的文档,他们只提供服务器端库来与其 API 交互。我的猜测是您将无法通过您的网络应用直接与它进行交互。

    最好的办法是使用代理,您可以自己开发一个或使用node-http-proxy 之类的东西来代理您的 API 调用。 (有 php 或 python 等价物)

    代理服务器将能够发出请求,然后将它们转发到您的应用程序。

    建议进一步阅读:在 google 上输入 understanding CORS 并阅读更多相关信息。

    【讨论】:

    • 我相信这是正确的。我已向 Easypost 开发人员请求他们支持 CORS,因为从浏览器客户端代码调用 api 有有效(且安全)的理由。由于这不会很快发生,我将不得不通过服务器代理调用......只是一堆无价值的管道代码。
    猜你喜欢
    • 1970-01-01
    • 2014-03-14
    • 2015-10-29
    • 2013-06-28
    • 2014-07-26
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多