Ajax获取公共数据源(TAF / METAR)失败

时间:2015-12-06 16:13:43

标签: javascript jquery html ajax cross-domain

我正在尝试使用来自http://weather.noaa.gov的CORS /跨域请求来访问纯文本天气数据,并且(显然很明显)我无法控制服务器。调用网页是纯HTML(即没有PHP,没有ASP.NET)。

我现在要求的网址是:http://weather.noaa.gov/pub/data/observations/metar/stations/LFBL.TXT并且在Fiddler中可以正常使用以下原始响应:

grid

我正在使用jQuery 2.1.4,我用来调用的JavaScript函数如下:

HTTP/1.1 200 OK
Server: Apache
ETag: "526b614-4b-5263c79234bbe"
Last-Modified: Sun, 06 Dec 2015 15:34:15 GMT
Accept-Ranges: bytes
Content-Length: 75
Content-Type: text/plain; charset=UTF-8
Cache-Control: max-age=168
Expires: Sun, 06 Dec 2015 15:44:26 GMT
Date: Sun, 06 Dec 2015 15:41:38 GMT
Connection: keep-alive

2015/12/06 15:30
LFBL 061530Z AUTO 14004KT 100V170 9999 ///TCU 12/07 Q1028

如图所示,当标题位被注释掉时,浏览器拒绝GET请求:

function getWeather(station)
{
station = station.toUpperCase();
$.ajax(
        {
        url: 'http://weather.noaa.gov/pub/data/observations/metar/stations/' + station + '.TXT', 
        type: "GET",
        //headers: { "Access-Control-Allow-Origin" : "*" } ,
        //beforeSend: function(xhr)
        //  {
        //  xhr.setRequestHeader( 'Access-Control-Allow-Origin' , '*'  )
        //  },
        dataType: "text",
        crossDomain: true,
        success: function(data)
            {
            return data;
            },
        error : function()
            {
            return "No METAR/TAF data available for the station '" + station + "'";
            }
    });
}

所以我尝试使用上面的 setRequestHeader 进行预检调用,但服务器给出了这样的响应:

No 'Access-Control-Allow-Origin' header is present on the requested resource.

所以我遇到的情况是我必须在请求中添加一个Access-Control-Allow-Origin标头,但是服务器没有正确响应(我再说一遍,我无法控制),所以调用正被封锁。

我的代码中是否有错误或缺少配置项?或者是否无法从跨域网站检索文本(而不是XML或JSON)?

0 个答案:

没有答案