Javascript API、CORS、MIME、XMLHttpRequest无法加载,问题

Javascript API、CORS、MIME、XMLHttpRequest无法加载,问题,javascript,jquery,ajax,twitter-bootstrap,Javascript,Jquery,Ajax,Twitter Bootstrap,我是一个初学者程序员/程序员,我已经开始做本地天气应用程序的事情。当尝试从API获取一段数据时,我遇到了以下错误(首先是trued.getJSON()): 1.“CORS策略已阻止访问“…”处的字体” 2.“引导工具提示需要系带。” 3“.XMLHttpRequest无法加载“…”请求的资源上不存在“Access Control Allow Origin”头。“ 然后我尝试了一种变通方法,将.ajax()与jsonp结合使用,但随后我遇到了以下错误: 1.“CORS策略已阻止访问“…”处的字体”

我是一个初学者程序员/程序员,我已经开始做本地天气应用程序的事情。当尝试从API获取一段数据时,我遇到了以下错误(首先是trued.getJSON()):

1.“CORS策略已阻止访问“…”处的字体”

2.“引导工具提示需要系带。”

3“.XMLHttpRequest无法加载“…”请求的资源上不存在“Access Control Allow Origin”头。“

然后我尝试了一种变通方法,将.ajax()与jsonp结合使用,但随后我遇到了以下错误:

1.“CORS策略已阻止访问“…”处的字体”

2.拒绝从“…”执行脚本,因为其MIME类型(“应用程序/json”)不可执行,并且启用了严格的MIME类型检查

现在我不知道该怎么办。另外,我想知道为什么在第一个示例中出现了Tether错误,因为一小时前我没有在那里得到这个错误,而在第二个示例(使用jsonp的示例)中仍然没有得到它

.getJSON()
代码:


.ajax()
code:

ajax
调用中添加所需的头

根据您的需要,有几种解决方案

如果要向单个请求添加自定义头(或一组头),只需添加
属性:

// Request with custom header
$.ajax({
    url: 'foo/bar',
    headers: { 'x-my-custom-header': 'some value' }
});
如果要向每个请求添加默认头(或一组头),请使用
$.ajaxSetup()

如果要向每个请求添加一个头(或一组头),请使用
发送前的
钩子
$。ajaxSetup()

编辑(更多信息):需要注意的一点是,使用
ajaxSetup
只能定义一组默认标题,在发送之前只能定义一个
。如果多次调用
ajaxSetup
,则只会发送最后一组标头,并且只会执行发送前的最后一次回调


参考:

如果API不支持CORS或JSONP…您必须在服务器或第三方服务上使用代理。并非所有的api都可以使用ajax访问
Access Control Allow Origin
头必须设置在另一端…在客户端设置它没有好处我建议您查看openweathermap.org的文档,了解如何调用它们的api
$.ajaxSetup({
    headers: { 'x-my-custom-header': 'some value' }
});

// Sends your custom header
$.ajax({ url: 'foo/bar' });

// Overwrites the default header with a new header
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });
$.ajaxSetup({
    beforeSend: function(xhr) {
        xhr.setRequestHeader('x-my-custom-header', 'some value');
    }
});

// Sends your custom header
$.ajax({ url: 'foo/bar' });

// Sends both custom headers
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });