【发布时间】:2023-03-03 20:11:01
【问题描述】:
我正在尝试使用我们的建议 API“https://SuggestionsAPI.net/suggest?key=xyz”之一实现搜索建议,该 API 与 Ajax GET 请求配合良好,但是当我尝试将它与 Angular $http 服务一起使用时,它向我抛出错误是控制台:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote
resource at https://SuggestionsAPI.net/suggest?key=xyz. This can be fixed by moving the
resource to the same domain or enabling CORS.
我进一步尝试:
$httpProvider.defaults.headers.get = { 'Access-Control-Allow-Origin': '*' };
$httpProvider.defaults.headers.get = { 'Access-Control-Request-Headers': 'X-Requested-With, accept, content-type' };
$httpProvider.defaults.headers.get = { 'Access-Control-Allow-Methods': 'GET, POST' };
$httpProvider.defaults.headers.get = { 'dataType': 'jsonp' };
我一直在想为什么在使用 Angular JS 时浏览器会阻止相同的 GET 请求。请建议我消除它。
编辑:我的下一步 id 在函数内分配建议:
app.directive('autoComplete', ['AutoCompleteService', function (AutoCompleteService) {
return {
restrict: 'A',
link: function (scope, elem, attr, ctrl) {
elem.autocomplete({
source: function (searchTerm, response) {
AutoCompleteService.search(searchTerm.term).then(function (autocompleteResults) {
response($.map(autocompleteResults, function (autocompleteResult) {
return {
label: autocompleteResult.JumboID,
value: autocompleteResult.JumboID
}
}))
});
},
minLength: 3,
select: function (event, selectedItem) {
// Do something with the selected item, e.g.
scope.yourObject = selectedItem.item.value;
scope.$apply();
event.preventDefault();
}
});
}
};
}]);
【问题讨论】:
-
由于请求是跨域的。您的服务器应该配置有 CORS,或者应该能够处理来自客户端的 JSONP 请求。您没有详细了解服务器的实施。
-
@Chandermani CORS 问题已由 AB 的回答解决,但另一个错误是“未捕获语法错误:意外令牌:”,因为我可以看到我的 URL 被翻译为建议?query=8645&callback=angular .callbacks._1:1 ?任何想法如何从请求中删除“:”?
标签: javascript angularjs cors