No' access-control-allow-origin'标头存在于AJAX请求中

时间:2014-11-17 15:19:44

标签: javascript jquery ajax

我使用以下网址获取天气应用的数据。

http://wsf.cdyne.com/WeatherWS/Weather.asmx/GetCityWeatherByZIP

之前我曾使用过这个API,但这次我正在尝试使用AJAX加载数据,因此在获取此数据时,我的页面的其余部分都不会重新加载。

这是我的javascript

<script>
    $(function () {
        var zip = 16001;

        $.ajax({
            type: 'GET',
            crossDomain:'true',
            url: 'http://wsf.cdyne.com/WeatherWS/Weather.asmx/GetCityWeatherByZIP' +zip,
            success: function (data) {
                console.log("Here is the data", data);
            },
            error: function () {
                alert("Error loading data");
            }
        });
    });
</script>

我一直在控制台中收到以下错误。

XMLHttpRequest cannot load http://wsf.cdyne.com/WeatherWS/Weather.asmx/GetCityWeatherByZIP16001. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:50733' is therefore not allowed access. The response had HTTP status code 500. weatherAjax.html:1

这使得它们似乎是访问数据的问题。但我之前使用过这个用户输入邮政编码的简单表格。它返回了数据。现在唯一的区别是我想使用AJAX加载数据,因此整个页面不会重新加载。我做错了什么?

1 个答案:

答案 0 :(得分:7)

以前您将用户的浏览器发送到其他人的网站。他们离开了你的网站,一切都很好。

现在,您正在尝试编写JavaScript,以指示访问者的浏览器从其他人的网站获取数据(这将使用他们拥有的任何auth / authz凭据)并将该数据提供给您的代码。 / p>

由于其他网站可能是例如在线银行,因此除非您要求提供数据的网站明确允许您访问该网站,否则这是禁止的。

如需进一步阅读,请参阅the Same Origin PolicyHTTP access control (CORS)