Background: We are using Laravel v8.83.5 running on nginx and PHP 7.4 Amazon Linux EC2 instance which is powered by an Elastic Load Balancer. We provide an iCalendar feed as a URL to customers which they can import into AirBNB, VRBO and other OTA.
Issue:
When our iCal Feed URL is added to VRBO, it's accepted and parsed by it.
When we use our iCal Feed URL on AirBNB, it throws an error 'We're having trouble syncing this calendar. Try importing it again.'. The same URL downloads an
.ics
file when visited from the browser and also works when importing into another iCal compatible calendar. The syntax is valid as has been checked on https://icalendar.org/validator.html as well.
To identify the issue,
we tried a different URL on another Digital Ocean server which returns the same response but does not have an ELB behind it and also uses nginx and php 7.4. That URL is accepted by the AirBnB importer. A screenshot of the response headers for this second server's request is attached here
A screenshot of the response headers for which the request fails on AirBNB is attached here.
When trying via postman, both requests return the same response content. The general headers are same as well.
On checking nginx access logs, the response code return to AirBNB by the servers is 200 in both cases.
If we pass a static file into the AirBNB importer from the server that's behind the ELB, the URL works on AirBNB.
We have tried
- disabling gzip and cache control in nginx on the response being returned.
- switching between apache and nginx on the server that sits behind the Amazon ELB.
- Removed all global middleware added by Laravel on that route