Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Ajax在IOS 9.0 Cordova中不起作用_Jquery_Ajax_Cordova - Fatal编程技术网

Jquery Ajax在IOS 9.0 Cordova中不起作用

Jquery Ajax在IOS 9.0 Cordova中不起作用,jquery,ajax,cordova,Jquery,Ajax,Cordova,我得到的结果是: $.ajax({ type: "GET", url: "http://myweb/php", success: function (data){ alert(data); }, error:function(xhr,textStatus,err) { alert("readyState: " + xhr.readyState); alert("responseText: "+ xhr

我得到的结果是:

$.ajax({
    type: "GET",
    url: "http://myweb/php",
    success: function (data){
        alert(data);
    },
    error:function(xhr,textStatus,err)
    {
        alert("readyState: " + xhr.readyState);
        alert("responseText: "+ xhr.responseText);
        alert("status: " + xhr.status);
        alert("text status: " + textStatus);
        alert("error: " + err);
    }
});
我尝试在我的php中添加header,但仍然不起作用。ajax代码在我将xcode更新到7.0和ios模拟器更新到9.0之前工作

readyState:0
responseText:""
status:0
text status:error
error:""

如果您在Xcode项目中工作,可能需要编辑
info.plist
文件。安全性随着iOS9而改变。苹果强烈建议在可能的情况下使用https进行网络请求。这是一个与这个问题相关的答案

从该职位:

将其添加到info.plist文件中

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
NSAppTransportSecurity
NSAllowsArbitraryLoads
应用程序传输安全(ATS)在应用程序及其后端之间的安全连接中实施最佳实践。ATS防止意外泄露,提供安全的默认行为,易于采用;在iOS 9和OS X v10.11中,默认情况下它也是打开的。无论您是在创建新应用程序还是在更新现有应用程序,都应尽快采用ATS

如果你正在开发一个新的应用程序,你应该只使用HTTPS。如果你有一个现有的应用程序,你现在就应该尽可能多地使用HTTPS,并尽快创建一个迁移其余应用程序的计划。此外,您通过更高级别API进行的通信需要使用TLS 1.2版进行加密,并具有前向保密性。如果尝试建立不符合此要求的连接,则会引发错误。如果应用程序需要向不安全的域发出请求,则必须在应用程序的Info.plist文件中指定此域

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');

就我对整个ATS(应用程序传输安全-iOS 9)的理解而言,28区推荐的方法不应该是您在应用程序中使用的方法

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key><true/>
</dict>
这将只允许对指定域的请求。所描述的方式就是苹果公司所采用的方式。正如你在屏幕截图上看到的,这是苹果希望用户使用它的方式

如果您没有指定任何内容,您将获得

无法加载网页,错误为:无法加载资源 因为应用程序传输安全策略要求使用安全的 连接

所以,像我说的那样改变它,错误就消失了。

对我来说,这是@area28和@Sithys答案的组合。因此,我最终将此添加到我的info.plist:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>domain.tld</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.1</string>
            </dict>
        </dict>
    </dict>

NSAppTransportSecurity
NSAllowsArbitraryLoads
NSExceptionDomains
example.domain.com
n包括多个域
NSTemporary ExceptionalLowsInSecureHttpLoads
NSTemporaryExceptionMinimumTLSVersion
TLSv1.1

对于将来可能遇到这种情况的人。我也有同样的问题,结果是由于SSL证书是自签名的(开发服务器)。iOS 9 Cordova(UIWebView-不确定WKWebView)将以静默方式失败并返回readyState:0,responseText:,状态:0


Android 7没有这个问题。

我同意。两者都会起作用,如果需要,你可以更具体。不是你可以,你应该更具体!在我看来,这些都是不可讨论的安全问题。第二种方法是将每个域都列为白名单,这绝对是可行的,第一种方法在iOS9之前的iOS中不起作用。(在iOS 7上测试)我面临着几乎相同的问题。我尝试了以上设置。同样的应用程序在我们的QA服务器中运行良好。但当我尝试连接到dev服务器时,它不工作。它返回{“readyState”:0,“status”:0,“statusText”:“Error:NETWORK\u ERR:XMLHttpRequest Exception 101”}这对我来说很有效。我的应用程序在将设备更新到iOS9后没有加载,现在它就像一个魔咒一样工作。救生员,谢谢!
<dict>
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
  <key>NSExceptionDomains</key>
  <dict>
    <key>example.domain.com</key>
    <dict>
      <key>NSIncludesSubdomains</key>
      <true/>
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>