在反应本机 ios 应用程序中使用超级代理时出错
Posted
技术标签:
【中文标题】在反应本机 ios 应用程序中使用超级代理时出错【英文标题】:Error while using superagent in react native ios app 【发布时间】:2016-08-09 08:44:47 【问题描述】:我已经制作了一个使用 nodejs 和 express 作为后端的 react native 应用程序,启用了 cors 并且在 android 上运行但是当我开始为 ios 移植应用程序并在模拟器 iphone 6 中运行它时,它运行良好,但是当它来打一个 api 因为我使用 superagent 给我这个错误。
Error: Request has been terminated Possible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc. at Request.crossDomainError (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:80241:9) at XMLHttpRequest.xhr.onreadystatechange (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:80311:13) at XMLHttpRequest.dispatchEvent (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:10000:15) at XMLHttpRequest.setReadyState (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:26063:6) at XMLHttpRequest.__didCompleteResponse (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:25917:6) at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:26011:52 at RCTDeviceEventEmitter.emit (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:9233:23) at MessageQueue.__callFunction (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7213:34) at http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7104:8 at guard (http://localhost:8081/index.ios.bundle?platform=ios&dev=true&minify=false:7050:1)
这就是我使用超级代理的方式
const request = require('superagent');
const req = request[options.method.toLowerCase()](options.uri)
.set(merge(, options.headers, options.json ? 'Content-Type': 'application/json' : ))
.query(options.qs ? options.qs : )
.send(options.json || options.form || options.formData)
;
const requestId = ;
api.activeRequests.add(requestId);
return new Promise((resolve, reject) =>
req.end((err, res) =>
console.log(err, res);
api.activeRequests.delete(requestId);
if (err || !res.ok)
console.log(res);
const error = res ? (res.body ? res.body : res) : err;
reject(error);
else
resolve(res.body);
);
);
需要帮助!
【问题讨论】:
请创建一个MVCE,否则我们似乎不可能帮助您处理您单独发布的信息。 您需要哪些确切信息? 把自己放在试图回答你问题的人的位置上。您可以向他们提供的详细信息越多,他们最容易为您提供帮助。例如,你添加了一小段代码,但它是单独编译的,是 MVCE 吗?您忽略了您使用的软件、哪些版本、哪些平台的重要细节? ...细节很重要。 【参考方案1】:这是由于 https 请求而不是 http 发布的。所以到目前为止,因为我处于开发者模式,所以允许 http 访问我的特定域。
【讨论】:
以上是关于在反应本机 ios 应用程序中使用超级代理时出错的主要内容,如果未能解决你的问题,请参考以下文章