заставить это работать. Я думаю, что браузер нуждается в информации о том, как долго действительны "права доступа"

од переднего плана:

<form action="" onSubmit={this.search}>
  <input type="search" ref={(input) => { this.searchInput = input; }}/>
  <button type="submit">搜索</button>
</form>

// search method:
const baseUrl = 'http://localhost:8000/'; // where the Express server runs
search(e) {
  e.preventDefault();
  let keyword = this.searchInput.value;
  if (keyword !== this.state.lastKeyword) {
    this.setState({
      lastKeyword: keyword
    });
    fetch(`${baseUrl}search`, {
      method: 'POST',
      // mode: 'no-cors',
      headers: new Headers({
      'Content-Type': 'application/json'
      }),
      // credentials: 'include',
      body: JSON.stringify({keyword})
    })
  }
}

И мой серверный код Express.js:

app.all('*', (req, res, next) => {
  res.header("Access-Control-Allow-Origin", "*");
  res.header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  // res.header('Access-Control-Allow-Credentials', true);
  res.header('Content-Type', 'application/json; charset=utf-8')
  next();
});

Когда я отправляю форму, я получаю два запроса. Одним из них является запрос OPTIONS, а другим - запрос POST, и ответ на него правильный:введите описание изображения здесьвведите описание изображения здесьвведите описание изображения здесь

Как видите, сервер Express работает на порте 8000, а сервер разработки React работает на порте 3000.localhost:3000 запрашиваетlocalhost:8000/search, а такжеlocalhost:8000 запрашивает другое происхождение с помощью метода POST. Тем не менее, только второй запрос работает хорошо. Я не знаю, как это случилось. Конечно, если я сделаю запрос GET с помощью строки запроса, все будет нормально. Но я также хочу знать, как сделать POST-выборку с телом запроса.

Ответы на вопрос(1)

Ваш ответ на вопрос