Нет ошибки «Access-Control-Allow-Origin», хотя в моем коде на стороне сервера есть заголовок

0

Обновление: по какой-то причине сценарий на стороне сервера имел символы Unicode, и когда я сохранил его через блокнот, он переключил его на ANSII и работал нормально. Я не уверен, как в Unicode попали туда, но теперь он работает. Надеюсь, этот пост поможет кому-то (скорее всего, мне) в будущем.


Я получаю ошибку CORS, несмотря на то, что у меня есть правильные заголовки. Это работало месяц назад, и ничего не изменилось на моем сервере или на стороне клиента.

Серверная сторона

<?php
header('Access-Control-Allow-Origin: https://mywebsite.com');  
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description');
header('Access-Control-Allow-Credentials: true');

Ошибка на стороне клиента

XMLHttpRequest cannot load https://serverside.com/serversidecode.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://mywebsite.com' is therefore not allowed access.

Код на стороне сервера выполняется полностью, но не будет отправлять обратно данные успеха на мой клиентский сервер.

Теги:
cors

1 ответ

0

Это может помочь вам CORS с заголовками php

"Обращение с запросами CORS должным образом является более привлекательным. Вот функция, которая будет отвечать более полно (и правильно)".

**
 *  An example CORS-compliant method.  It will allow any GET, POST, or OPTIONS requests from any
 *  origin.
 *
 *  In a production environment, you probably want to be more restrictive, but this gives you
 *  the general idea of what is involved.  For the nitty-gritty low-down, read:
 *
 *  - https://developer.mozilla.org/en/HTTP_access_control
 *  - http://www.w3.org/TR/cors/
 *
 */
function cors() {

    // Allow from any origin
    if (isset($_SERVER['HTTP_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']))
            header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
            header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

        exit(0);
    }

    echo "You have CORS!";
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню