Хорошо, я не знаю, как я решил проблему, но я думаю, как в приведенном выше комментарии сказано, что заголовок был кешем.Я перезапускаю ssl с cloudflare, потому что он любит кэшировать все.Теперь, чтобы заставить его работать, я должен удалить эти две вещи из javascript.
headers: {"X-My-Custom-Header": "some value"},
и
contentType: "application/json",
из всех моих вызовов ajax.
какЯ упомянул подстановочный знак, который я использовал только для целей тестирования, просто чтобы посмотреть, была ли проблема в моем динамическом php-коде.К счастью, это было не так.
function cors() {
$domain = ltrim($_SERVER['HTTP_HOST'], "api.");
$origin = $_SERVER['HTTP_ORIGIN'];
if (preg_match("/^http[s]?[:]\/\/(w{3})?[.a-zA-Z ]*".$domain."$/i", $origin)) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
// may also be using PUT, PATCH, HEAD etc
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, DELETE");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
header('Content-Type: application/json');
header('Accept: application/json');
}
В начале это вызывается cors ();не вызывать перекрестного загрязнения коллектора и континента.
Спасибо за совет, мне нужны были идеи для мозгового штурма о том, в чем может быть проблема.
Обновление: я думал, что cloudflare портит заголовки https://support.cloudflare.com/hc/en-us/articles/200308847-Does-Cloudflare-support-Cross-origin-resource-sharing-CORS- Но похоже, что это могут быть не они, хотя и очищали кеш, который они помогли.Тогда я застрял на другой проблеме, POST и GET работали просто отлично, но не такие вещи, как DELETE и OPTIONS.Поэтому после анализа и исследования я обнаружил, что header () в PHP не работал.Оказывается, заголовки PHP не установлены с litespeed (но работают с apache) из-за litespeed.
Мне нужно иметь заголовки на .htaccess как временное исправление.Я имею в виду, что заголовки PHP работают, но по какой-то странной причине то, что я вижу в заголовках для программы почтальона, не согласовано в AJAX.