No' Access-Control-Allow-Origin'科尔多瓦的错误

时间:2015-09-09 11:55:51

标签: ajax cordova xmlhttprequest cross-domain

我有一个由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环境之外执行它,它会给出结果。我该怎么办?

1 个答案:

答案 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时不允许的特定行为。