Ошибка 404 или CORS при попытке отправить электронное письмо с помощью ax ios и php - PullRequest
0 голосов
/ 29 мая 2020

Я создал свою форму и могу записать свой ввод с помощью состояния (используя реакцию), но при отправке я получаю следующую ошибку в моей консоли:

POST http://localhost:3000/my-web-app/src/api/contact/index.php 404 (Not Found)

В настоящее время я разрабатываю веб-приложение по-прежнему, я подумал, что проблема может быть в том, что я нахожусь на localhost, поэтому я попытался загрузить файл index. php на сервер, когда я попробовал это, я получил следующую ошибку:

Access to XMLHttpRequest at 'https://website.ca/index.php' from origin 'http://localhost:3000' 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.

Я попытался добавить заголовок в свой php файл, но ничего не изменилось ...

Вот как выглядит мой почтовый запрос:

handleFormSubmit = e => {
    e.preventDefault();
    axios({
      method: 'post',
      url: `${API_PATH}`,
      headers: { 'content-type': 'application/json' },
      data: this.state
    })
      .then(result => {
        this.setState({
          mailSent: result.data.sent
        })
      })
      .catch(error => this.setState({ error: error.message }));
  };

А вот мой файл index. php (единственная цель - отправить простое электронное письмо):

<?php
    header('Access-Control-Allow-Origin: *');
    header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
    header("Access-Control-Allow-Headers: Authorization");

    $rest_json = file_get_contents("php://input");
    $_POST = json_decode($rest_json, true);

    if (empty($_POST['fname']) && empty($_POST['email'])) die();

    if ($_POST)
{

    // set response code - 200 OK

    http_response_code(200);
    $subject = $_POST['fname'];
    $to = "info@cannections.ca";
    $from = $_POST['email'];

    // data

    $msg = $_POST['number'] . $_POST['message'];

    // Headers

    $headers = "MIME-Version: 1.0\r\n";
    $headers.= "Content-type: text/html; charset=UTF-8\r\n";
    $headers.= "From: <" . $from . ">";
    mail($to, $subject, $msg, $headers);

    // echo json_encode( $_POST );

    echo json_encode(array(
        "sent" => true
    ));

  }
else
  {
     // tell the user about error
     echo json_encode(["sent" => false, "message" => "Something went wrong"]);
  }

?>

Я никогда не развертывал приложение response. js (пока) Я не знаю, есть ли эта проблема происходит только из-за localhost, в любом случае мне нужно, чтобы это письмо работало независимо от того, где они (браузеры), и т. д. c ... Я ценю всю помощь, которую я могу получить с этим!

Ура .

...