Javascript 如何设置';访问控制允许原点';标题是否带有提前打印/猎犬?
我正在尝试集成一个自动完成字段,该字段使用REST获取其信息。我用的是打字机/猎犬。我根据文档中的示例进行了后续操作,但我找不到任何地方如何设置标题,以使其正常工作。例如,这是代码:Javascript 如何设置';访问控制允许原点';标题是否带有提前打印/猎犬?,javascript,jquery,rest,typeahead,bloodhound,Javascript,Jquery,Rest,Typeahead,Bloodhound,我正在尝试集成一个自动完成字段,该字段使用REST获取其信息。我用的是打字机/猎犬。我根据文档中的示例进行了后续操作,但我找不到任何地方如何设置标题,以使其正常工作。例如,这是代码: var countries = new Bloodhound({ datumTokenizer: function(countries) { return Bloodhound.tokenizers.whitespace(countries); },
var countries = new Bloodhound({
datumTokenizer: function(countries) {
return Bloodhound.tokenizers.whitespace(countries);
},
queryTokenizer: Bloodhound.tokenizers.whitespace
,
prefetch: {
url: "http://localhost/api-1.1/search/country/key/%QUERY",
filter: function(response) {
return response.countries;
}
}
});
// initialize the bloodhound suggestion engine
countries.initialize();
// instantiate the typeahead UI
$('.typeahead').typeahead(
{ hint: true,
highlight: true,
minLength: 1
},
{
name: 'country_label',
displayKey: function(countries) {
return countries.country.country_name;
},
source: countries.ttAdapter()
});
这是我在控制台日志中从服务器得到的响应:
XMLHttpRequest cannot load http://localhost/api-1.1/search/country/key/%QUERY. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
任何建议都将不胜感激
谢谢 如果用于构造头文件的所有内容都是同步的,那么只需在ajax选项中传递
beforeSend
函数即可。i、 e:
prefetch: {
url: "http://localhost/api-1.1/search/country/key/%QUERY",
filter: function(response) {
return response.countries;
},
ajax: {
beforeSend: function(jqXHR, settings) {
var authHeaders;
// pull apart jqXHR, set authHeaders to what it should be
jqXHR.setRequestHeader('Authorization', authHeaders);
}
}
}
为了避免混淆,您正在设置auth头以获得对API的访问,API定义了
访问控制允许来源
您是否使用文件://
协议加载页面(而不是ajax请求)?首先,您不希望使用带预取的%QUERY
,因为它需要返回所有记录。其次,尝试将ajax:$.ajax({type:'GET',dataType:'jsonp'})
添加到prefetch
对象中。不,文件是使用http://协议加载的。我有一个表格,里面有我对班级的意见。国家。当我开始在输入上输入字母时,我想要检索api中保存的建议列表。可以使用在头文件中发送的一些授权密钥来访问API本身。问题是在这种情况下如何设置标题,因为例如在普通ajax查询中,您将具有headers属性。但是在typeahead/Hound中,我没有看到这个选项,所以我不知道应该在哪里包含它们。希望这能提供更多的信息。@sirssince1990我问这个问题的原因是,如果页面和ajax目标url都是http://localhost:80/
,您不应该有CORS要求。我只是想弄明白为什么会发生这种事