jQuery.get()只适用于某些网页[duplicate]

6qftjkof  于 2022-11-22  发布在  jQuery
关注(0)|答案(1)|浏览(110)

此问题在此处已有答案

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.

我不认为这是一个httphttps的问题,因为两个URL都是https,但只有一个工作。
如果有人知道这个问题可能是什么,我将感谢你的帮助。它可能与头有关,但我不确定,也不知道如何实现它们。

jogvjijk

jogvjijk1#

您 尝试 加载 的 站点 位于 不同 的 域 中 , 因此 您 必须 遵循 访问 控制 规则
如果 没有 它 , 您 只能 加载 某些 类型 的 资源
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin 的 最 大 值
副本 :Origin is not allowed by Access-Control-Allow-Origin 格式

相关问题