我在http://transltr.org/中向外部服务发出https请求。
var reqUrl = "http://transltr.org/api/translate?text=dog&to=he";
var deferred = $q.defer();
$http.get(reqUrl).then(function(response) {
deferred.resolve(response);
alert("sada");
},function (error) {
deferred.reject(error);
});
return deferred.promise;
rrsponse是200,我得到数据:
但已触发错误提醒。有办法获取这些数据吗?
我也在控制台中看到错误:
XMLHttpRequest无法加载http://transltr.org/api/translate?text=dog&to=he。 ' Access-Control-Allow-Origin'标头包含多个值' *,*',但只允许一个。起源' http://myDomain.co.il'因此不允许访问。
我也试过这个版本(在这种情况下,根本没有回复):
var reqUrl = "http://transltr.org/api/translate";
var params = {
to: to,
text: text
};
var deferred = $q.defer();
var request = {
method: 'GET',
url: reqUrl,
dataType: "json",
contentType: "application/json; charset=utf-8",
headers: {
'Content-Type': 'application/json',
'Cache-Control': 'no-cache',
'X-Requested-With': 'XMLHttpRequest',
'Access-Control-Allow-Origin': '*'
},
params: params
};
$http(request).success(function (data) {
deferred.resolve(data);
}).error(function (error) {
deferred.reject(error);
});
答案 0 :(得分:0)
如果您在Windows上使用Chrome,请执行以下操作以禁用CORS
过滤器。
退出chrome。按住Windows图标,然后按下字母R,同时保持Windows按键。将下面的命令粘贴到结果框上,然后按Enter键。
chrome.exe --user-data-dir =“C:/ Chrome开发者会话” - 禁用网络的安全性
这将打开Chrome,并禁用 websecurity (无CORS过滤器)。现在,在此Chrome窗口中重新加载您的应用,并让我知道任何由此产生的异常。这是为了帮助您实现您想要的目标,但您必须在 API 中处理CORS。
答案 1 :(得分:-7)
你无法混合Javascript和PhP变量
var deferred = $ q .defer();