我有一个由cordova创建的项目。如果我执行以下内容:
$.ajax({
url: "http://101.01.105.159/mySource",
crossDomain : true,
beforeSend: function( xhr ) {
xhr.overrideMimeType( "text/plain; charset=x-user-defined" );
}
})
.done(function( data ) {
if ( console && console.log ) {
console.log( data);
}
});
我发现以下错误:
GET http://101.01.105.159/mySource n.ajaxTransport.k.cors.a.crossDomain.send @ jquery-2.1.3.min.js:4n.extend.ajax @ jquery-2.1.3.min.js:4(anonymous function) @ VM2064:2InjectedScript._evaluateOn @ VM1791:904InjectedScript._evaluateAndWrap @ VM1791:837InjectedScript.evaluate @ VM1791:693
punten.html:1 XMLHttpRequest cannot load 101.01.105.159/mySource. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 401.
但是,如果我在cordova环境之外执行它,它会给出结果。我该怎么办?
答案 0 :(得分:1)
您需要在要调用的Web应用程序上启用跨源资源共享(CORS)。这因平台而异,但是对于Microsoft IIS托管站点,您可以在web.config文件中启用跨源请求。见http://enable-cors.org/server_iis7.html。许多其他平台的配置可以在同一站点上找到。
编辑:“环境”我假设您的意思是开发环境和/或Cordova应用程序本身。您可以从“环境”之外访问http://101.01.105.159/mySource的可能原因是您可能正在通过浏览器发出一个简单的旧http请求。但是,Cordova应用程序正在发出AJAX请求,这是在101.01.105.159的Web应用程序未设置为允许CORS时不允许的特定行为。