У меня есть API, построенный на Cake PHP. Это работает по большей части, но время от времени доступ браузера к API прекращается. Сообщение об ошибке в ответе на запрос XHR выглядит следующим образом:
'Access to XMLHttpRequest at 'http://be:8888/api/pings' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Однако, если я делаю точно такой же запрос через POSTMAN (или если я перехожу непосредственно к URL, а не через XHR), это работает без каких-либо проблем. Я подумал, что это может быть проблема OPTIONS перед полетом, но в заголовках запросов нет списка Request Method
, а в журнале доступа Apache это GET-запросы. Нет ничего связанного в журнале ошибок Apache.
Перезапуск MAMP - т.е. Apache - не решает проблему и не очищает локальный кэш DNS. Единственное, что исправляет это, это перезапуск, после которого все снова работает нормально на несколько часов, а потом снова начинает мигать.
Я не могу вспомнить, что вызвало это. Я не думаю, что это настоящая ошибка промежуточного программного обеспечения CORS, потому что перезапуск исправляет это, и API доступен нормально. Кроме того, если я добавлю die
во время метода промежуточного программного обеспечения CORS __invoke
, он не зашёл слишком далеко (в любом случае сначала нужно попасть в индекс d ie в сети root)
Я получаю эту ошибку, даже если я отключаю приложение, помещая die('here');
в начале файла root index. php файла.
Даже если я удаляю файлы index.php
(оба в проект root и web root), чтобы при просмотре URL-адреса отображалась ошибка Apache по умолчанию 404 not found: The requested URL /webroot/index.php was not found on this server
, я по-прежнему получаю ошибки CORS при попытке использовать XHR в браузере.
I ' Мы заметили эту проблему только после обновления до Ma c OS X Catalina.
Что может быть причиной этого?
[Update:] Вот доказательство того, что он работает в браузере после перезагрузки системы:
Summary
URL: http://be:8888/api/clients
Status: 200 OK
Source: Network
Address: ::1.8888
Request
GET /api/clients HTTP/1.1
Accept: application/vnd.api+json
Content-Type: application/vnd.api+json
Origin: http://localhost:8080
Accept-Language: en-gb
Access-Control-Allow-Origin: *
Host: be:8888
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15
Referer: http://localhost:8080/
Accept-Encoding: gzip, deflate
Connection: keep-alive
Однако через несколько часов он перестает работать. Если бы это была проблема CORS, я понимаю, что она НИКОГДА не сработает.