@Roman_cox

Как исправить CORS ошибку Access to fetch at ${API} from origin ${CLIENT} has been blocked by CORS policy?

Столкнулся с проблемой - надо сделать POST запрос, в постмане все работает, в браузере preflight приходит с ответом 200, но на сам запрос приходит CORS Error...

const soapFetch = async () => {
        const body =
            `<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> \
                <Body> \
                    <getServiceCostByParcels2 xmlns="http://dpd.ru/ws/calculator/2012-03-20"> \
                        <request xmlns=""> \
                            <auth> \
                                <clientNumber>${clientNumber}</clientNumber> \
                                <clientKey>${key}</clientKey> \
                            </auth> \
                            <pickup> \
                                <cityId>${pickUpCityId}</cityId> \
                                <index>${pickUpIndex}</index> \
                                <cityName>${pickUpCityName}</cityName> \
                                <regionCode>${pickUpRegionCode}</regionCode> \
                                <countryCode>${pickUpCountryCode}</countryCode> \
                            </pickup> \
                            <delivery> \
                                <cityId>${deliveryCityId}</cityId> \
                                <index>${deliveryIndex}</index> \
                                <cityName>${deliveryCityName}</cityName> \
                                <regionCode>${deliveryRegionCode}</regionCode> \
                                <countryCode>${deliveryCountryCode}</countryCode> \
                            </delivery> \
                            <selfPickup>${selfPickup}</selfPickup> \
                            <selfDelivery>${selfDelivery}</selfDelivery> \
                            <parcel> \
                                <weight>${weight}</weight> \
                                <length>${length}</length> \
                                <width>${width}</width> \
                                <height>${height}</height> \
                                <quantity>${quantity}</quantity> \
                            </parcel> \
                        </request> \
                    </getServiceCostByParcels2> \
                </Body> \
            </Envelope>`;

        //let response =
        await fetch('https://wstest.dpd.ru/services/calculator2?wsdl', {
            method: 'POST',
            headers: {
                'Access-Control-Allow-Origin': 'http://localhost:3000',
                'Content-Type': 'text/xml',
            },
            body: body
        }).then((res) => {
            console.log(res)
        })
    }
  • Вопрос задан
  • 641 просмотр
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
CORS-заголовки должны быть не в запросе, а в ответе от сервера, в том числе и в preflight.
Ответ написан
@holllop
Ну я когда столкнулся с подобной проблемой просто поставил пакет CORS на сервер(node.js) и всё. Если что это делается командой npm install cors
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы