我试图通过在Android设备(6.0.1)上运行我的应用来发出简单的帖子请求。 AFAIK在执行此操作时没有CORS问题,但控制台输出:
(apiurl正在替换实际网址的原因,实际的网址是IP地址)
POST file:///android_asset/www/apiurl net::ERR_FILE_NOT_FOUND
我已添加了cordova白名单插件并设置了我的内容安全政策:
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
这是我的帖子请求代码:
$scope.powerPrompt = function() {
var pwr = alert("Power On");
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
$http({
method: 'POST',
url: 'apiurl',
data: "data to be sent",
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function(response) {
// handle success things
alert("success");
})
.error(function(data, status, headers, config) {
// handle error things
})
答案 0 :(得分:2)
如评论中所述,您需要确保在网址前加上http://
,否则会尝试通过file://
访问文件系统,这就是您收到文件未找到错误的原因。
确保您以下列格式提出请求:
http://<api url>:<ports if necessaray>/path/
答案 1 :(得分:1)
您使用的是相对网址 - 这不起作用,因为您的index.html加载了file://
网址。
将http://<your host>:<port>/path/to/resource
作为url参数,它应该按预期工作。
在Android平台上运行应用程序时,使用http
作为协议时AFAIK应该没有太大问题。但是你可以在iOS上遇到问题。根据应用程序的类型,通常最好在服务器上使用SSL加密的网络流量。如果您没有SSL证书,请尝试Let's Encrypt。