Задать вопрос

Проблема c CORS запросом, как исправить?

При запросе на другой домен выдает
has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.


Проблема в бэке или я в заголовках че то не то добавил. Вот заголовки
const headers  = {
  "Accept": "application/json",
  "Access-Control-Allow-Origin": "*",
  "X-Requested-With": "XMLHttpRequest",
  "Access-Control-Allow-Methods" : "GET,POST,PUT,DELETE,OPTIONS",
  "Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
}


вот запрос
Axios.post('domen.com/api', dto, config) /* домен фековый */
      .then((res)=>console.log('Response',res))
  • Вопрос задан
  • 163777 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 1
bingo347
@bingo347
Crazy on performance...
заголовки вида Access-Control-Allow-* - это заголовки ответа, их должен отправлять сервер в ответ на запрос
притом если запрос OPTIONS (браузер шлет сам перед основным запросом для проверки прав), то сервер должен так же ответить этими заголовками, но со статусом 204 и без тела
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
zorakk
@zorakk
полтора года веба
Обычно запрос XMLHttpRequest может делать запрос только в рамках текущего сайта. При попытке использовать другой домен/порт/протокол – браузер выдаёт ошибку.

Подробнее читайте на https://learn.javascript.ru/xhr-crossdomain
Ответ написан
drno-reg
@drno-reg
см не кратко
Для Flask

scope = Flask(__name__, static_url_path='')
# пришлось добавить эту штуку чтобы решить проблему с blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
CORS(scope)


в template.html

var x = []
        var y = []
        var url ='http://0.0.0.0:8228/scope/store_by_datetime?id_scope_dir=1&datetime_start=2020-10-17%2010:00&datetime_end=2020-10-17%2011:00'


        var req = new XMLHttpRequest();
        req.overrideMimeType("application/json");
        req.open('GET', url, true);
        req.onload  = function() {
            var jsonResponse = JSON.parse(req.responseText);
            // do something with jsonResponse
            console.log(jsonResponse)
            console.log(jsonResponse['result'].length)
            for(var k in jsonResponse['result']) {
                // console.log(k, jsonResponse['result'][k]);
                x.push(jsonResponse['result'][k]['date'])
                y.push(jsonResponse['result'][k]['value'])
                // console.log(x)
                var data = [
                    {
                        x: x,
                        y: y,
                        type: 'scatter'
                    }
                ];
                Plotly.newPlot('myDiv', data);
            }
        };
        req.send(null);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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