0

我正在使用 spree 1.2.4 和 Rails 3.2.11 运行电子商务平台,在结帐过程中,我试图向我的服务器运行 ajax 调用以更新一些信息。整个结帐过程使用 SSL(网址中包含 https)。ajax 调用似乎被取消了。我假设它是因为 SSL 加密。如果我查看 chrome,HTTP 状态只会显示“(已取消)”。我的ajax调用是:

    $.ajax({
        url: '/orders/get_update_cart_fields'
    }).done(update_cart_fields);

ssl_required :get_update_cart_fields我的订单控制器中也有

任何人都知道为什么会发生这种情况,以及如何解决它以便我的 ajax 调用工作?

4

2 回答 2

1

如果网页是从 http 域加载的,那么对同一域但使用 https 协议的 Ajax 调用被视为跨域请求。通常这会失败,因为浏览器强制执行同源策略

好消息是,对于绝大多数浏览器,您可以通过正确配置服务器来启用跨域资源共享。如何执行此操作的详细信息取决于您的服务器。请参阅此站点以获取指导和更多信息。基本上,唯一的要求是您的服务器在 Ajax 响应中包含以下标头:

Access-Control-Allow-Origin: *
于 2013-03-24T00:44:31.720 回答
0

好的,解决了。这是我必须做的才能让它工作:

阿贾克斯:

    $.ajax({
        'url': location.protocol + '//' + location.host + '/' + '/orders/get_update_cart_fields'
    }).done(update_cart_fields);

在订单控制器中:

ssl_allowed :get_update_cart_fields

after i did both of those things, i got it working. According to many sources ajax calls should automatically determine whether its http(s) but for some reason i had to manually do it.

于 2013-03-24T18:28:50.413 回答