I noticed a strange caution message when looking at downloaded resources using Google chrome inspector (F12):
Caution provisional headers a
This was happening for me, when I had a download link and after clicking on it I was trying also to catch the click with jquery and send an ajax request. The problem was because when you are clicking on the download link, you are leaving the page, even it does not look so. If there would no file transfer, you would see the requested page.. So I set a target="_blank" for preventing this issue.
I encountered this issue, and I managed to identify a specific cause, which isn't mentioned above either in answers or the question.
I am running a full js stack, angular front end and node back end on SSL, and the API is on a different domain running on port 8081, so I am doing CORS requests and withCredentials as I am dropping a session cookie from the API
So specifically my scenario was: POST request, withCredentials to port 8081 caused the "CAUTION: provisional headers are shown" message in the inspector and also of course blocked the request all together.
My solution was to set up apache to proxy pass the request from the usual SSL port of 443 to the node SSL port of 8081 (node has to be on a higher port as it cannot be ran as root in prod). So I guess Chrome doesn't like SSL requests to unconventional SSL ports, but perhaps their error message could be more specific.
I doubt my answer is in time to help you but others might find it helpful. I experienced a similar issue with a jQuery Ajax Post script that i created.
It turned out that i had a typo in the href attribute of the A tag that i was using to fire the post. I had typed href="javacsript:;" (reversing the 's' and the 'c' ).. this caused the script to try to refresh the page while the post was attempting to fire. corrected the typo and it worked perfectly fine for me.
I believe it happens when the actual request is not sent. Usually happens when you are loading a cached resource.
My situation is cross-origin related.
Situation: Browser sends OPTIONS
request before sending the real request like GET
or POST
. Backend developer forgets to deal with the OPTIONS
request, letting it go through the service code, making the processing time too long. Longer than the timeout setting I wrote in the axios
initialization, which is 5000 milliseconds. Therefore, the real request couldn't be sent, and then I encountered the provisional headers are shown
problem.
Solution: When it comes to OPTIONS
request, backend api just return result, it makes the request faster and the real request can be sent before timeout.
I came across this and it went away when I switched from https to http. The SSL certs we use in dev aren't verified by a 3rd party. They're just locally generated dev certs.
The same calls work just fine in Chrome Canary and Firefox. These browsers don't appear to be as strict about the SSL cert as Chrome is. The calls would fail in Chrome with the "CAUTION: Provisional headers..." message.
I think/hope that when we use a legit SSL cert in stage and prod, we won't see this behavior in Chrome anymore.