[ 
https://issues.apache.org/jira/browse/CB-1406?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13466193#comment-13466193
 ] 

Jochen Magnus edited comment on CB-1406 at 9/29/12 11:13 PM:
-------------------------------------------------------------

I made some further tests and found that the problem with XHR requests in 
webworkers in a native app is caused by the Same Origin Policy (SOP). This only 
happens with iOS 6 not with iOS 5. 

With the remote debugger which is newly available in Safari 6 for iOS 6 apps 
the console shows: "XMLHttpRequest cannot load 
http://live.rhein-zeitung.de/test.txt. Origin file:// is not allowed by 
Access-Control-Allow-Origin."

I enhanced my test case so it could now load alternatively by XHR in the main 
applications thread or by XHR via webworker. No problem occurs in the first 
case, but the SOP security issue happens in the second case, because there is 
"Origin" HTTP header field witch contains "file://" (in the first case, there 
seems to be no such header field).

A workaround is to allow Cross Domain Scripting in the webservers config (for 
Apache webserver add "Header add Access-Control-Allow-Origin file://" to the 
config), but this may be a security problem. I tested it, but I am unsure about 
the security issue when allowing 'file://' or asterisk.
 So I would prefer a "real" solution.
                
      was (Author: ioma):
    I made some further tests and found that the problem with XHR requests in 
webworkers in a native app is caused by the Same Origin Policy (SOP). This only 
happens with iOS 6 not with iOS 5. 

With the remote debugger which is newly available in Safari 6 for iOS 6 apps 
the console shows: "XMLHttpRequest cannot load 
http://live.rhein-zeitung.de/test.txt. Origin file:// is not allowed by 
Access-Control-Allow-Origin."

I enhanced my test case so it could now load alternatively by XHR in the main 
applications thread or by XHR via webworker. No problem occurs in the first 
case, but the SOP security issue happens in the second case, because there is 
"Origin" HTTP header field witch contains "file://" (in the first case, there 
seems to be no such header field).

A workaround is to allow Cross Domain Scripting in the webservers config (for 
Apache webserver add "Header add Access-Control-Allow-Origin *" to the config), 
but this may be a security problem. I tested it, but I am unsure about the 
security issue when allowing '*' or 'file://'.
 So I would prefer a "real" solution.

                  
> HTTP-Get via XHR in Web Workers always return status 0 under iOS 6 (Beta 4)
> ---------------------------------------------------------------------------
>
>                 Key: CB-1406
>                 URL: https://issues.apache.org/jira/browse/CB-1406
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: iOS
>    Affects Versions: 2.1.0
>         Environment: all iOS devices and simulators
>            Reporter: Jochen Magnus
>            Assignee: Michal Mocny
>              Labels: HTTP, WebWorker, XHR
>             Fix For: 2.2.0
>
>         Attachments: testworker.js, workertest2.tar.bz2, workertest.html, 
> xhr_tests.png
>
>
> HTTPRequests in the Web Workers ending always with http.readyState==4  
> (that's the ready state) but with http.status==0, which is an undefined 
> status (normal is 200 for "o.k."). The file is requested from and fully 
> deliverd by the webserver. 
> This happens under iOS 6 Beta 4 but not under iOS 5.x where the same app with 
> the same Cordova version works well.
> The problem did not occur with XHR in the native programs main thread nor in 
> non-native HTML5-apps (WebApps without the use of Cordova). 
> A Xcode test project is available. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to