Rumah > Soal Jawab > teks badan
Jadi saya cuba bermain dengan bahagian hadapan dan belakang sedikit. Apabila cuba menghantar data dari bahagian hadapan ke pelayan saya mendapat
Akses kepada XMLHttpRequest di 'http://test.localhost/login' dari asal 'http://localhost:3000' telah disekat oleh dasar CORS: Respons kepada permintaan pra-penerbangan gagal Semakan Kawalan Akses: Tiada 'Kawalan-Akses' - Pengepala Allow-Origin' terdapat pada sumber yang diminta
Berikut ialah tetapan axios saya onClick:
export const login = (email, password) => { return axiosClient.post('/login', { email, password }) .then(response => { // handle successful login return response.data; }) .catch(error => { // handle failed login throw error; }); };
AxiosClient saya ialah:
import axios from "axios"; const axiosClient = axios.create({ baseURL: process.env.REACT_APP_API_URL, (my localhost) headers: { 'Content-Type': 'application/json', Accept: 'application/json', }, }); export default axiosClient;
Konfigurasi cors saya di bahagian belakang ialah
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class Cors { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ public function handle($request, Closure $next) { $headers = [ 'Access-Control-Allow-Origin' => 'http://localhost:3000', 'Access-Control-Allow-Methods' => 'GET, POST, PUT, DELETE, OPTIONS', 'Access-Control-Allow-Headers' => 'Content-Type, Authorization', ]; if ($request->isMethod('OPTIONS')) { return response()->json([], 200, $headers); } $response = $next($request); foreach ($headers as $key => $value) { $response->header($key, $value); } return $response; } }
P粉8850351142024-03-26 09:48:39
Adakah anda mencuba memasukkan IP localhost dalam cors.php seperti ini?
'allowed_origins' => ["http://localhost:3000"]
Jika ini tidak berjaya, cuba gunakan konfigurasi ini
'paths' => ['api/*', 'sanctum/csrf-cookie'], 'allowed_methods' => ['*'], 'allowed_origins' => ['*'], 'allowed_origins_patterns' => ["*"], 'allowed_headers' => ['*'], 'exposed_headers' => ["*"], 'max_age' => 0, 'supports_credentials' => false,
Dan ulas baris ini dalam Kernel.php, tetapi sila ambil perhatian bahawa konfigurasi ini akan menerima permintaan dari mana-mana sahaja, jadi pastikan bahagian belakang anda menerima permintaan daripada sumber yang dibenarkan pilihan anda sebelum digunakan.
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class