Когда я пытаюсь отправить электронное письмо через API, я получаю это сообщение:
Доступ к XMLHttpRequest на «https://api.urosciric.com/mail' от источника» https://urosciric.com' былзаблокирован политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрашиваемом ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
Я видел много решенийни один из которых не является тем же самым и ни один из них не работал до сих пор.
Угловой код:
const httpOptions = {
headers: new HttpHeaders({
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*"
})
};
this.http.post('https://api.urosciric.com/mail',
{ firstName: this.FirstName, lastName: this.LastName, email: this.Email, phone: this.Phone, text: this.Text },
httpOptions)
.pipe(catchError(err => {
this.onMailSend(false);
return throwError(err);
})).subscribe(data => {
this.onMailSend(true);
return data;
});
Код Laravel (api):
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Validator;
use App\Mail\General;
class MailController extends Controller
{
public function send(Request $request){
$firstName = $request -> input('firstName');
$lastName = $request -> input('lastName');
$email = $request -> input('email');
$text = $request -> input('text');
$phone = $request -> input('phone');
$to = "ciricbgd@gmail.com";
$subject = "[urosciric.com] email from ".$firstName." ".$lastName;
$txt = $text;
$headers = "From: mail@urosciric.com";
mail($to,$subject,$txt,$headers);
return response()->json('Mail sent. Thank you!', 201);
return response()->json('Mail not sent. Please try contacting me directly at ciricbgd@gmail.com',400);
}
}
Когда я пытаюсьв режиме разработки или в режиме prod я получаю эту ошибку, но когда я использую ПО для тестирования почтальона или API, все работает нормально.