54009


サーバーに設置しているPHPにajaxでアクセスして、jsonでデータを受け取ることをしているのですが、iosのsafariのみうまくいきません。  
fail内容を見ると

XMLHttpRequest.status : 0  
textStatus : error  
errorThrown.message : 'the operation timed out'

とalertで表示されているので、

[code]

    jQuery.ajax({
        async : false,
        url : 'PHP' ,
        type : 'POST',
        dataType : "json",
        timeout: 0,
        cache: false,
        data : 'p=aaa&q=bbb
    })
    
[/code]

とtimeoutやcacheの指定をしてもダメでした。

PHP側の処理はjson_encode($data);でjsonで返していて、$dataの中にも値があることは確認してます。  
pcのchromeやAndroidのchromeは問題ないく動作しjsonの値が受け取れているのですが、原因となるようなことはないでしょうか？


CC BY-SA 4.0
2019-04-05T09:27:56.143
53950
2019-04-08T04:50:57.507
9128
question
javascript ios ajax
iosのsafariのみajaxがfailに入る


2019/4時点でiosのsafariがajaxのtimeoutの設定が無効化しているようで、設定を短くしても、長くしても、10秒ほどで自動的に処理を中断するようでした。  
PHP側は入力したURLの存在確認のためfile_get_contentsを利用していたのですが、特定のURLでのレスポンスが10秒以上かかることがわかりました。（サイトのスクレイピング対策？）  
curlに変更することで一旦回避することができました。


CC BY-SA 4.0
2019-04-08T04:50:57.507
54009
2019-04-08T04:50:57.507
9128
53950
answer