How to disable HTTP pipelining from iOS5 devices to a regular website - http

One of my clients is having a problem with their web service ever since iOS5 came out. Their service (an HTTP api) reacts weirdly to HTTP pipelining calls and it will take a few days to fix it. Is there any meta or HTTP response setting I can set in my website to disable this feature when iOS5 devices browse to my page? This is a standard web application and not a native app.
I Googled to no prevail. Thanks.

Related

FetchEvent for "<URL>" resulted in a network error response: CORP prevented from serving the response to the client

I'm building and app with firebase and expo in react native. The app has live streaming with Zoom Web SDK. In order to deliver a better experience to the end user, for example, the ability to send video faster and enable multiple video streams, which powers features like Gallery View and Virtual Backgrounds, we need to enable SharedArrayBuffer.
As of Chrome 92, SharedArrayBuffer is only available if your web page is Cross-Origin Isolated, or if your web page uses Credentialless headers.
We implemented the coi-serviceworker from https://github.com/gzuidhof/coi-serviceworker and the rules to implement this are:
Rules: 1. It must be in a separate file, you can't bundle it along with your app. 2. It can't be loaded from a CDN: it must be served from your own origin. 3. Your page will still need to be either served from HTTPS, or served from localhost.
THE PROBLEM:
When a implemented the coi-serviceworker in my code, all the files(images and videos) that comes from the firebase storage are not displaying anymore.
I think the error is because of the second rule, because we use Firebase Hosting to publish our app, but the Zoom Gallery View works.
Firebase Hosting uses an advanced global content delivery network (CDN) to make your website as fast as possible. Requested static content is automatically cached on the CDN. If you resume site content, Firebase Hoststatic will not automatically clear all content and CDN cache until the next request.
Someone faced the same issue? I appreciate any help!

Intercept WKWebView requests and responses in iOS 9

I have the following requirements:
The application has local HTML content that is encrypted
This local content has to be displayed using a WKWebView
Intercept the requests done from the WKWebView and provide a custom response for each requests (decrypting the content on the fly)
Support iOS 9.3
The requirements could be fulfilled using WKURLSchemeHandler but this was only introduced in iOS 11.
The only solution that I can reach so far would be:
Embed a web server in the application listening for example at http://localhost:8080
The server would read the local content, decrypt it and send it back to the WKWebView
Change the web content so that all requests are directed to http://localhost.8080
Having an embeded web server seems overkill and will introduce a whole lot of trobule. But it seems this is the approach that has been taken when faced with similar requirements. For example the Cordova and Ionic Capacitor projects.
Ionic Capacitor only removed the embeded web server when they dropped support for iOS 10:
https://github.com/ionic-team/capacitor/releases/tag/1.0.0-beta.11
I'm not interested in solutions using private APIs.

Adding Server Push to replace polling on to an asp.net WebAPI REST service

I am hoping this is not too off topic for a post here.
I have an asp.net webAPI service, which provides a number of routes to get near realtime data (ie within say 10 seconds), which required the client application to poll for changes.
I am investigating on which technology would be best to add an "opt in" push notification service, which just pushes "thin" payloads to tell the client application it is now time to call the existing REST route for an update. This way, the push payload is small, and does not contain any security sensitive data (it still gets this using the existing REST security infrastructure)
Cloud based messaging
Previously, I have been told that, for a Mobile application, I should use something like Firebase cloud messaging, or some other messaging service, however this does not seem like the right solution for "subscription based notifications" I am talking about here. I can certainly see this would be useful, if the client is on either iOS or Android device, and wanted messages/notifications/alarms (etc), which could also work when the application is not running, but this does not seem like the right thing to use of these notifications of changed data (which may be happening all the time, sometimes every 5 seconds). Also, I do not want to only target these mobile devices, but also, for example either a web or desktop application, which may also use the same REST service
Other technologies
I have seen mention of Web sockets, or, in the case of asp.net, the option to use SignalR (which will wrap the web sockets, with fallback). SignalR looks good, but my worry is the availability of client libraries for non web / Windows applications (eg iOS, Android). I am also looking at Rest Hooks. These look interesting, but I can't quite see what the actual "push mechanism" is; it almost looks like they need to POST to the subscriber using HTTP, which means the subscriber has to also act as a "server endpoint".
Just after any thoughts / best practices on this, or what others have used?
In particular, (the verification or otherwise), that for this use case, using cloud based messaging is not the right thing to use due to the frequency of these push notifications (ie something where my server gets to the application via another 3rd party service which pushes to the device/application)
Thanks in advance for any suggestions!
Signalr is an option
There are some libraries which you can use in iOS and android. I suggest you to read once https://visualstudiomagazine.com/articles/2013/11/01/how-to-use-signalr-in-ios-and-android-apps.aspx (its a bit older, but on the point)
Android Client: See How to use signalr in Android
Some alternatives :
Pusher (https://pusher.com/)
Android Client: https://pusher.com/docs/android_quick_start
iOS Client: https://pusher.com/docs/ios_quick_start
Socket.IO (https://socket.io/)
Details iOS Client: https://socket.io/blog/socket-io-on-ios/
Details Andriod Client: https://github.com/socketio/socket.io-client-java
To discuss:
Why you will only send a thin payload whith signalr? I see no benefit for that.
Why "using cloud based messaging is not the right thing"? I do not understand your arguments but I do not know how your application looks like.

iOS9 and HTTP with dynamic sources

My app is remotely updated with image URLs from tons of different sources, most of these on HTTP servers. Now, these HTTP URLs won't download because of App Transport Security.
Apparently I have two options.
Allow all HTTP URLs: Bad practice, possible App Store rejection
Allow specific domains: Not possible because this would mean I can't remotely add images
How can I download the images without disabling App Transport Security?
What if you programmed your own web based API that downloads and stores said images - then you can retrieve them with a call to it. Secure your API with HTTPS. This also gives you more fine grained control in that you own the server you are querying instead of accessing someone else's.

Update view in response to web service requests

I'm fairly new to MVC and web programming at all. I need to solve one problem.
Let's say I have complete and working mvc app, web services (it might be anything - wcf, servicestack, web api...) and mobile apps (iOS, Android) working with my web service. Now when I'm on my Admin page is there a way for me update this admin page without having to reload it in response to web service requests when my mobile clients send one.
I don't want to ask my database for changes every few seconds though. I really want this flow:
I'm looking at my admin page -> Mobile app is sending a request (for example if user clicked a button or changed position) -> Web service gets the request -> ???? -> Data on my admin page changes.
Edit: Ok. Why it's always like this ? You look for an answer for long time. Then you ask a question and few minutes later you find possible solution. What I've already found is server side js events, websockets and long polling. Am I heading in the right direction?
For ServiceStack you can get real-time updates with Server Events. You can use the C#/.NET ServerEvents Client with Xamarin.iOS and Xamarin.Android to handle Server Push events on iOS and Android.
I think what you might be looking for is http://signalr.net/

Resources