Как исправить 'Доступ к XMLHttpRequest был заблокирован политикой CORS' Перенаправление не разрешено для предполетного запроса только один маршрут

Как исправить 'Доступ к XMLHttpRequest был заблокирован политикой CORS' Перенаправление не разрешено для предполетного запроса только один маршрутКак исправить 'Доступ к XMLHttpRequest был заблокирован политикой CORS' Перенаправление не разрешено для предполетного запроса только один маршрут Я устанавливаю laravel и vuejs.

Плагин CORS для laravel и внешнего интерфейса, я использую Axios для вызова REST api

у меня ОШИБКА Доступ к XMLHttpRequest в 'https: //xx.xxxx.xx' из источника 'http: // локальный: 8080' заблокирован политикой CORS: ответ на предполетную проверку запрос не проходит проверку контроля доступа: перенаправление не разрешено для предполетный запрос.

this is for a vuejs axios setup  **main.js**
axios.defaults.baseURL = process.env.BASE_URL;
axios.defaults.headers.get['Accepts'] = 'application/json';
axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*';
axios.defaults.headers.common['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept';

  **content.vue file**

  this.loading = true;
      var companyId = this.$route.params.cid;
      var userId = this.$route.params.uid;
      const thisVue = this;
      var formData = new FormData();

  let data = {};

  formData.append("subject", this.title);
  formData.append("content", this.content);
  formData.append("posting_article_url", this.blog_link);
  formData.append("recruitment_tension", this.sel_recruitment_tension);
  formData.append("why_hire_engineer", this.sel_company_hire_engineer);
  formData.append("technique_skill", this.requiredTechniqueSkill);
  formData.append("better_technique_skill",this.betterTechniqueSkillIfThereIs);
  formData.append("personality", this.requiredPersonality);
  formData.append("any_request", this.anyRequest);
  formData.append("location", this.location);
  formData.append("supplement_time", this.supplement_time);
  formData.append("supplement_contract", this.supplement_contract);
  formData.append("en_benefits", this.en_benefits);
  formData.append("recruit_role", this.recruit_role);
  formData.append("how_to_proceed", this.how_to_proceed);
  formData.append("current_structure", this.current_structure);
  if (this.selectedSkill.length > 0)
  {
    let selectedSkills = this.selectedSkill
    .filter(obj => {
      return  obj.id;
    })
    .map(item => {
      return item.id;
    });
    formData.append("skill_keyword", selectedSkills);
  }
  if (this.imageBlob != "") {
    formData.append("image", this.imageBlob, "temp.png");
  }
  for (var i = 0; i < this.sel_schedule.length; i++) {
    formData.append("freelance_type[" + i + "]", this.sel_schedule[i])
  }
  for (var i = 0; i < this.sel_type_of_contract.length; i++) {
    formData.append("contract_type[" + i + "]", this.sel_type_of_contract[i])
  }
    this.loading = false;
    $('html, body').animate({scrollTop:300}, 'slow');
  } else {
     axios
    .post(
      "/xx/xxx/?token = " + localStorage.getItem("token"),
      formData,
      {
        headers: [
            { "X-localization": localStorage.getItem("lan") },
            { "Access-Control-Allow-Origin": '*' },
            { "Access-Control-Allow-Headers": 'Origin, X-Requested-With, Content-Type, Accept '},
            { "Access-Control-Allow-Methods": "POST, GET, PUT, OPTIONS, DELETE" },
            { "Access-Control-Max-Age": 3600 }
          ]
      }
    )
    .then(res => {
      if (!res.data.result) {
         if (res.data[0]) {
          this.$toaster.error(res.data[0]);
          this.$store.dispatch("logout");
        }
        if (res.data.errors) {
            for (var i = 0; i < res.data.errors.length; i++) {
              this.$toaster.error(res.data.errors[i].message);
            }
        }
        this.loading = false;
      } else {
        this.$toaster.success(thisVue.$t("success_recruit_add"));
      }
    })
    .catch(() => {
      this.$toaster.error(thisVue.$t("err_network"));
    });
  }

ошибка возникает только на одном маршруте, остальные все работают. также работаю над Почтальон

В вашей ошибке говорится, что HTTP-перенаправление не разрешено для предварительного запроса OPTIONS, теперь вам нужно отладить, почему другой сервер отправляет это

Ferrybig 16.01.2019 08:39

@Ferrybig, я получил ошибку только на одном маршруте, все остальные работают хорошо, а также хорошо работают на моем локальном сервере.

priyeshvadhiya 16.01.2019 08:45

Не могли бы вы показать полный ответ, включая путь исходного URL-адреса и путь URL-адреса, который сервер пытается перенаправить вас

Ferrybig 16.01.2019 12:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
23
3
180 172
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Проблема связана с серверной частью, в нашем случае это Laravel, в вашем config / cors.php попробуйте использовать следующую конфигурацию:

'supportsCredentials' => true,
'allowedOrigins' => ['*'],
'allowedOriginsPatterns' => [],
'allowedHeaders' => ['*'],
'allowedMethods' => ['*'],
'exposedHeaders' => [],
'maxAge' => 0,

Или вы можете попробовать использовать этот код в верхней части public / index.php

Редактировать

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE');
header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X- 
Request-With');

все еще не работает, я меняю код, что вы сказали, но все равно сталкиваюсь с той же ошибкой.

priyeshvadhiya 16.01.2019 11:12

Вероятно, у вас есть некоторая неправильная конфигурация либо на стороне веб-сервера, либо на стороне Laravel. Возможно, вам поможет это решение: Почему мой веб-сервер nginx не обрабатывает шрифты ttf?.

Обратите особое внимание на метод OPTIONS, поскольку он включает поддержку предварительной проверки.

почему не работает только один маршрут? все остальные маршруты работают нормально.

priyeshvadhiya 16.01.2019 11:56
Ответ принят как подходящий

Отключение безопасности политики CORS:

  1. Перейдите в расширение Google и найдите Allow-Control-Allow-Origin.
  2. Теперь добавьте его в хром и включите.
  3. Добавьте https: // localhost в его настройку, как на снимке экрана:

  4. Теперь закройте весь браузер Chrome и откройте cmd. Затем запустите следующую команду:

    «C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe» –-allow-file-access-from-files --disable-web-security --user-data-dir --disable-features = CrossSiteDocumentBlockingIfIsolating

    Если команда работает правильно, вы увидите следующее уведомление, как на скриншоте ниже:

    Если вы не видите уведомление, значит, команда не сработала. Поэтому вам следует проверить ссылку на каталог, указанную в команде, чтобы убедиться, что файл chrome.exe существует в этой ссылке на каталог. Если вы найдете файл chrome.exe, то после закрытия браузера Chrome вы должны проверить диспетчер задач, работает ли какая-либо другая служба Chrome в фоновом режиме. После закрытия всех служб команда должна работать должным образом.

Internet Explorer:

  1. Чтобы отключить политику cors в Internet Explorer, перейдите на internet option > security > Internet и снимите флажок «Включить защищенный режим».
  2. Затем нажмите на настраиваемый уровень и включите доступ к источникам данных в доменах. в разделе "Разное", как на изображении ниже. Следуйте тому же процессу для internet option > security > Local intranet.

Надеюсь, это решит вашу проблему.

большие усилия, но мой сценарий отличается.

priyeshvadhiya 02.04.2019 09:11

Каков ваш сценарий?

Md Riadul Islam 03.04.2019 06:57

он решил мою проблему, я сталкиваюсь с этим несколько дней

Ziaur Rahman 04.04.2019 04:33

Это решит проблему на локальной машине. Но когда вы выходите в эфир, проблема не исчезает. Сказать всем пользователям установить расширение или выполнить некоторые настройки в своих браузерах - не лучшее решение.

franc 07.03.2020 13:31

@franc определенно не годится для сервера. Решение только для localhost. На сервере есть несколько передовых методов, которым вы можете следовать. Вот я делюсь одним: w3.org/wiki/CORS_Enabled

Md Riadul Islam 08.03.2020 11:20

Можете ли вы объяснить, откуда именно открывается эта третья точка - добавьте localhost в ее настройку, как на снимке экрана: я не могу найти эту опцию

Nithin Paul 18.12.2020 09:23

Ссылка не работает

Denny 20.04.2021 21:20

Я согласен с @franc, это не лучшее решение и не должен быть принятым ответом

ksugiarto 25.05.2021 08:48

@ksugiarto Не могли бы вы предложить хорошее решение для localhost ?? Это решение определенно не подходит для сервера, поскольку серверу необходимо разрешить URL-адрес, но рассматриваемый URL-адрес - localhost, поэтому ответ должен быть основан на локальной среде.

Md Riadul Islam 25.05.2021 11:19

@MdRiadulIslam Я просто прохожу мимо, когда ищу свою проблему cors, я не использую vue.js. Но здесь проблема с cors всегда связана с сервером, иногда даже мы правильно настраиваем cors, но ответ сервера не подходит для этого конкретного запроса, фронт / браузер может сказать, что это проблема cors из-за некоторых отсутствующих cors ответ конфигурации от сервера. Во-вторых, посмотрите, как вы взламываете Chrome с помощью --disable-web-security, это определенно то, что вы сделали на свой страх и риск, поэтому, пожалуйста, не предлагайте это рискованное решение.

ksugiarto 31.05.2021 18:03

В-третьих, как и в предыдущем комментарии, когда вы меняете компьютер, ОС, это снова возникает, когда настоящая проблема - это сервер. Не говоря уже о другом члене команды, с которым работает автор, они легко смогут воспроизвести случай, кроме того, цель кода всегда запускать на сервере, а не на локальном хосте. Короче говоря, ваше решение может работать, но это еще не лучшее решение.

ksugiarto 31.05.2021 18:03

Обработка cors (Cross-Origin Resource Sharing) на стороне сервера. Если вы пришли с конца laravel, значит, пакет barryvdh / laravel-cors поможет решить эту ошибку

url: https://packagist.org/packages/barryvdh/laravel-cors

Мы можем исправить это с помощью APP_URL, если вы используете его как базовый URL для запроса axios. Убедитесь, что корневой URL вашего браузера и APP_URL в .env совпадают.

Например, если вы запускаете приложение на «http://127.0.0.1:8000», тогда должно быть APP_URL = http://127.0.0.1:8000

И если вы запустите приложение на «http: // локальный: 8000», тогда должно быть APP_URL = http: // локальный: 8000

Надеюсь, это поможет! И это протестировано с laravel6.x

Проблема со стороны сервера. Если вы используете express js. Попробуйте установить пакет express cors на свой сервер.

npm install cors

В вашем app.js требуется cors.

var cors = require('cors')

Затем добавьте его в качестве промежуточного программного обеспечения в свое приложение.

app.use(cors())

После установки пакета вы не должны столкнуться с проблемой cors.

Творили чудеса!

Naazneen Jatu 19.05.2021 09:32

Проблема исходит из вашего приложения Vue.

Например: вы запрашиваете URL-адрес ниже:

https://example.com/api/methods/

И бэкэнд перенаправляет его на:

https://example.com/api/methods

Остерегайтесь косой черты в конце.

Отключение этого флага сработало для меня: хром: // флаги / # блокировать небезопасные-частные-сетевые-запросы

nelmio_cors:
    defaults:
        allow_origin: ["*"]
        allow_headers: ["*"]
        allow_methods: ["POST", "PUT", "GET", "DELETE", "OPTIONS"]
        max_age: 3600
        origin_regex: false
    paths:
        '^/': ~

добавить в nelmio_cors / packge / nelmio_cors

Другие вопросы по теме