此问题在此处已有答案:
XMLHttpRequest cannot load XXX No 'Access-Control-Allow-Origin' header(11个答案)
6天前关闭。
在我的网页here上,我把一堆天气API组合成一个页面。我最近一直在试验weather.gov API,它取得了巨大的成功。
然而,我想查询一些数据,weather.gov不会通过简单的API请求提供这些数据。例如,如果你在上面链接的我的网页上输入一个邮政编码,并获得一个位置的天气数据,你可以向下滚动到底部,看到一个包含各种天气项目的图表。这是由weather.gov提供的。但不是通过JSON API请求提供的。我必须加载带有$.get()
的图表的网页,然后解析生成的HTML输出以提取所有的<img>
标记,然后获得正确的标记。
// gets the plotter image URL (10th in the array of images on the plotter page)
// https://stackoverflow.com/questions/43772776/
$.get(`https://forecast.weather.gov/MapClick.php?marine=0&zmx=1&zmy=1&FcstType=graphical&lat=${latitude}&lon=${longitude}&Submit=Submit`, function(data, status){
var pictures = [],
m;
var str = data,
rex = /<img[^>]+src="?([^"\s]+)"?\s*/gi;
while (m = rex.exec( str )) {
pictures.push( m[1] );
}
const allImages = [];
var index = 0;
pictures.forEach(function(picture){
allImages.push(picture);
})
var correctImage = "https://forecast.weather.gov/" + allImages[10];
console.log(correctImage);
document.getElementById('graph').setAttribute('src', correctImage);
});
这段代码将从生成图形的网页中取出所有图像,将它们存储在一个数组中,然后检索数组中的第10项--我想要的图像所在的项。
但是,如果我将上面$.get()
方法中的URL替换为其他URL(在本例中为https://www.weather.gov/lwx/
),则会出现控制台错误
XMLHttpRequest cannot load https://www.weather.gov/lwx/ due to access control checks.
我不认为这是一个http
与https
的问题,因为两个URL都是https
,但只有一个工作。
如果有人知道这个问题可能是什么,我将感谢你的帮助。它可能与头有关,但我不确定,也不知道如何实现它们。
1条答案
按热度按时间jogvjijk1#
您 尝试 加载 的 站点 位于 不同 的 域 中 , 因此 您 必须 遵循 访问 控制 规则
如果 没有 它 , 您 只能 加载 某些 类型 的 资源
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin 的 最 大 值
副本 :Origin is not allowed by Access-Control-Allow-Origin 格式