1

最近,当网站开发正在进行时,我开始在 aws s3 上托管一个带有订阅选项的静态网页。我的静态网页使用订阅者的电子邮件作为参数对另一个 RESTful 服务进行 ajax 调用。订阅完成后,我需要通知订阅者。在这里,它与回调接缝了一个问题。

$.ajax({
    type: 'GET',
    url: 'http://www.my-domain.com/api/Subscribe?email=' + email
}).success(function (data) {
    if (data) {
        alert('Thank you for registering!');
    }
});

订阅完成后“.success(”不会启动。对请求的响应是:

Reload the page to get source for: http://www.my-domain.com/api/Subscribe?email=john.smith@simplyemail.com

有谁知道它是 s3 功能还是其他功能?

4

1 回答 1

2

根据您的描述,这似乎与CORS政策有关。

看看亚马逊定义的“为什么使用 CORS” :

为了保证您的内容安全,您的网络浏览器实施了一种称为同源策略的东西。

默认策略确保从一个站点或域加载的脚本和其他活动内容不会在没有明确指示这是所需行为的情况下干扰或与来自另一个位置的内容交互。

在某些情况下,原始页面的开发人员可能有正当理由编写与其他位置的内容或服务交互的代码。CORS 提供了允许开发人员告诉浏览器允许这种交互的机制。

我明白:

[...] ajax 调用另一个 RESTful 服务[...]

表示调用另一台服务器,这可能会因为CORS而被浏览器阻止。

参考:

Mozilla W3C

于 2016-06-21T20:00:53.290 回答