دوستان سلام،
من در ویو جی اس برای ارسال اطلاعات به سرور از پلاگین Vue Resource استفاده میکنیم ، اما متاسفانه خطای زیر نمایش داده میشه , برای حل این مشکل حتی از اکستنشن های کروم برای Allow CORS استفاده کردم ، اما متاسفانه کار نمیکند ، از دوستان کسی اطلاعی داره چطور میشه این مشکل رو حلش کرد
Access to XMLHttpRequest at 'https://....' from origin ' ...' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
@nimageneral
این خطا زمانی به وجود میاد که آدرس دامنه که کاربر توی url بروزر نوشته با آدرس دامنه سروری که دارید بهش درخواست میدید یکی نباشه ، این مشکل رو هم میشه سمت کلاینت حل کرد که منطقی نیست ، چون اینجوری باید هر کسی که میخواد از سایت شما استفاده کنه بره اون اکستنشن رو نصب کنه ، هم میشه سمت سرور حلش کرد،
برای اینکه سمت سرور حلش کنید باید هدر هایی رو به ریسپانس هاتون اضافه کنید،
. یک راه اینه که هدر هارد به فایل .htaccess اضافه کنید
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
علامت * یعنی از هر دامینی بشه درخواست فرستاد ، میتونید به جاش دامین خاصی رو وارد کنید .
. راه دوم اینه که یه میدلور بنویسید و توی هر راوتی که خواستید ازش استفاده کنید، یه میدلور درست کنید و کد زیر رو توی تابع handler قرار بدید
$headers = [
'Access-Control-Allow-Origin' =>' *',
'Access-Control-Allow-Methods'=>' POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Headers'=>' Content-Type, Accept, Authorization, X-Requested-With, Cache-Control'
];
if($request->getMethod() == "OPTIONS") {
return \Response::make('OK', 200, $headers);
}
$response = $next($request);
foreach ($headers as $key => $value) {
$response->header($key, $value);
}
return $response;
و در آخر به هر راوتی خواستید اضافش کنید ، یا اگر میخواید به کل راوت ها اضتفه بشه میتونید توی فایل kernel.php توی لیست $middleware قرارش بدید.
. راه سوم اینه که از پکیج laravel-cors استفاده کنید ، سرچ کنید توی گیت هاب موجوده ، این پکیج هم کار خاصی نمیکنه ، همون میدلور رو برای شما آماده نوشته ، و یسری کانفیگ ها هم در اختیارتون قرار میده
. یک روش دیگه هم هست ، اگر دامین فرانت و سرورتون یکیه و فقط توی www یا https و غیره اختلاف داره شما میتونید توی رندر ویو اول آدرس دامینی که طرف توی url وارد کرده رو بگیرید و از اون به بعد اون آدرس دامین رو اول تمام api هایی که لود میکنید قرار بدید و به اون دامنه درخواست بفرستید.
ممنونم وحید جان،
لطف کردید ، دقیقا مشکل از دامین بود که متاسفانه یکی نبود و به اشتباه بجای https من hhtps وارد کرده بودم.
سپاسگزارم
@forughi.vahid
سلام
اگه ما افزونه وردپرسی با ویو نوشتیم که قراره دست کاربرای زیادی برسه، چطور این مشکل CROS رو حل کنیم؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟