Ошибка: доступ к XMLHttpRequest в 'http://127.0.0.1/mediacrow/mymail/mailer_php.php/' - PullRequest
1 голос
/ 13 марта 2019

Не знаю, в чем проблема, это мой угловой скрипт для отправки данных формы в php скрипт по электронной почте.Я попытался получить доступ к примеру кода с GitHub и здесь, но, похоже, ни один не работает для меня.У меня есть следующая ошибка каждый раз, когда я пересылаю, но она отлично работает на почтальоне.

Error: Access to XMLHttpRequest at 'http://127.0.0.1/mediacrow/mymail/mailer_php.php/' from origin 'http://127.0.0.1:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains multiple values '*, *',

Angular: contact.component.ts

send() {
    console.log(this.contactForm.value);
   this.http.post(`http://127.0.0.1/mediacrow/mymail/mailer_php.php/`,
                {
                   data: this.contactForm.value,
                   headers:
                     {
                      'Content-Type': 'application/x-www-form-urlencoded'
                      }
             })
    .subscribe((resp) => {
    this.snackBar.open(
      'Thank you for your submission!',
      '', {duration: 4000}
    );
   }, (err) => {
    this.snackBar.open(
      'This was an error with your submission!',
      '', {duration: 4000}
    );
   });

  }

Это мой почтовый скрипт

<?php

// Headers 
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
//add more for creating  a post 
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Access-Control-Allow-headers,
Content-Type, Access-Control-Allow-Methods');
$errors = '';

if( empty( $errors ) ) {
    $postdata = file_get_contents("php://input");
    $request = json_decode($postdata);

    $from_email = $request->email;
    $message = $request->message;
    $phone  = $request->phone;
    $platform = $request->platform;
    $browser = $request->browser;
    $name = $request->firstname.' '.$request->lastname;
    $from_name = $name;
    $response_array = array();


    $to_email = "adex@gmail.com";

    $contact = "<p><strong>Name: </strong> $from_name</p><p><strong>Email:</strong> $from_email</p>";

    $content = "<p><strong>Phone Number: </strong>$phone</p><p><strong>Browser: </strong>$browser</p>
    <p><strong>Platform: </strong>$platform</p><p><strong>Message: </strong>$message</p>";

    $website = "M&M";
    $email_subject = "Contact Form";

    $email_body = "<html><body>";
    $email_body .= "$contact $content";
    $email_body .= "</body></html>";

    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    $headers .= "From: $from_email\n";
    $headers .= "Reply-To: $from_email";

    mail( $to_email, $email_subject, $email_body, $headers );

    $response_array['status'] = 'success';
    $response_array['from'] = $from_email;
    echo json_encode( $response_array );

} else {

    $response_array['status'] = 'error';
    echo json_encode($response_array);
}
?>

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

1 Ответ

0 голосов
/ 13 марта 2019

Запрос OPTION отправляется раньше, чем отправляется ваш запрос POST. Но в вашем PHP-коде вы не разрешили метод OPTION.

Это не код PHP, но я думаю эта ссылка (CORS JSON php Нет заголовка 'Access-Control-Allow-Origin' на запрашиваемом ресурсе) будет полезно для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...