Реагировать на CORS с URL Param, несмотря на установку политики CORS на - PullRequest
0 голосов
/ 17 января 2019

Итак, я пытаюсь сделать запрос на выборку, чтобы получить данные до загрузки компонента, используя componentWillMount, но он продолжает выдавать ошибку

Access to fetch at 'http://localhost:5000/mine/1/user_list' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

Теперь я попробовал все решения, предложенные в другом связанном вопросе. Я пытался установить в заголовке параметр «Allow-CORS». Также у меня есть инструмент Google Chrome, который включает CORS, и он уже включен. Кроме того, я также попытался сохранить параметр в запросе на выборку в режиме.

Но это не работает. Интересно то, что если я пытаюсь использовать постоянный URL (например, http://locahost:5000/maintenance/company/fetch), запрос проходит нормально без каких-либо проблем. Однако, когда я использую пользовательский путь URL, как показано ниже (http://localhost:5000 + "мой / "+ activeSite +" / user_list ";) затем начинается проблема. Я приложил небольшой фрагмент кода для вашей справки.

Мой бэкэнд находится в Python3 flask-restplus. Он не получает запрос на бэкэнд. Ошибка выдается еще до того, как она сделает запрос на выборку. Мой контроллер не имеет такой политики для CORS на бэкэнде. Но я предполагаю, что если другой запрос работает нормально в приложении, он должен работать без использования этой политики в серверной части Также я проверил функцию с Swagger-UI, и она отлично работает.

import React, { Component } from "react";
import Select from "react-select";
import { serverConst } from "../constants/system";
import { getAuthHeader } from "../helper/authHeader";

class TaskForm extends Component {
  constructor(props) {
    super(props);
    this.state = {
      assigned: "",
      assigner: [],
      reporter_list: [],
      operationSucceed: false,
      error: ""
    };

    this.handleChange = this.handleChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

  componentWillMount() {
    let activeSite = localStorage.getItem("activeMinesite");
    if (activeSite) {
      const request_url = serverConst.SERVER_URL + "mine/" + activeSite + "/user_list";
      fetch(request_url, {
        method: "GET",
        mode: "cors",
        headers: getAuthHeader()
      }).then(response => {
        response.json().then(json => {
          console.log(response);
        });
      });
    }
  }

1 Ответ

0 голосов
/ 17 января 2019

Можете ли вы попробовать запустить Chrome из командной строки, используя следующий cmd:

open -a Google\ Chrome --args --disable-web-security --user-data-dir
...