Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用HTTPS时,对rails 3服务器的ajax请求被取消_Javascript_Ajax_Ruby On Rails 3_Spree - Fatal编程技术网

Javascript 使用HTTPS时,对rails 3服务器的ajax请求被取消

Javascript 使用HTTPS时,对rails 3服务器的ajax请求被取消,javascript,ajax,ruby-on-rails-3,spree,Javascript,Ajax,Ruby On Rails 3,Spree,我正在运行一个使用spree 1.2.4和Rails 3.2.11的电子商务平台,在结帐过程中,我试图运行一个ajax回调到我的服务器以更新一些信息。整个签出过程使用SSL(URL中有https)。ajax调用似乎被取消了。我假设这是因为SSL加密。如果我在chrome中查看,HTTP状态只会显示“(已取消)”。我的ajax调用是: $.ajax({ url: '/orders/get_update_cart_fields' }).done(update_cart

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

    $.ajax({
        url: '/orders/get_update_cart_fields'
    }).done(update_cart_fields);
我的订单控制器中也有
ssl\u必填项:获取\u更新\u购物车\u字段


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

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

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

Access-Control-Allow-Origin: *

好的,解决了。我要做的就是让它工作:

阿贾克斯:

在控制器中:

ssl_allowed :get_update_cart_fields

在我做了这两件事之后,我开始工作了。根据许多消息来源,ajax调用应该自动确定其http是否正确,但出于某种原因,我不得不手动执行

该网页是否从用于请求的同一https域加载?我相信是这样的?进行ajax调用时,浏览器地址中的url为https://domain.com/checkout/address;ajax请求将发送到http(s)。www.domain.com/orders/get\u update\u cart\u字段。我不确定是否需要专门设置ajax调用,以便它知道我使用的是https而不是http?我不知道是否可以进行此实验,但请尝试通过http加载所有内容。如果请求仍然失败,那么使用https并不是问题的根源。当我在本地运行https而不使用SSLCA时,一切都正常。您是否可以通过浏览器直接向服务器运行查询(键入url,而不是ajax)?这很奇怪,因为ajax肯定是通过https工作的。它是从https加载的。出于某种原因,当我键入https时,stackoverflow决定将其隐藏在超链接中。@Zyren-Ah。当我发布我的答案时,我也遇到了同样的问题;必须对其进行编辑才能使链接正常工作。我建议您尝试启用CORS,看看会发生什么。
ssl_allowed :get_update_cart_fields