مشکل با CORS در سمت کلاینت
https://lamtakam.com/qanda/2284/مشکل-با-CORS-در-سمت-کلاینت 2سلام دوستان من هر درخواستی با هر متدی میفرستم به api متودش به options تغییر میکنه جواب نمیده سیستم عامل ویندوز هست به api با postman درخواست میدم جواب میده ولی با javascript درخواست میفرستم این مشکل پیش میاد
<?php
namespace App\Http\Middleware;
use Closure;
use \Illuminate\Http\Request;
class Cors
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE, OPTIONS')
->header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Authorizations, X-Authorization');
}
}
اینم کد کلاینت
var xhr = new XMLHttpRequest();
xhr.open('GET', consts.api_url+'contact', true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.onload = function() {
var text = xhr.responseText;
var title = getTitle(text);
alert('Response from CORS request to ' + url + ': ' + title);
};
xhr.onerror = function() {
alert('Woops, there was an error making the request.');
};
xhr.send();
3 | لطفا کدتون را هم ضمیمه سوالتون کنید. هم سمت کلاینت و هم سمت سرور. و اینکه ذکر کنید از چه سیستم عاملی استفاده میکنید؟ (یعنی ویندوز هست یا لینوکس) ــ سروش قادری نسب در 6 سال قبل | ||
من درست متوجه نشدم. شما با چه متدی میفرستید؟ و اینکه آیا از Ajax استفاده میکنید یا مثلا React یا Angular و ..؟ چرا که بعضی از فریم ورک های جاوا اسکریپتی خودشون هدرهای مورد نیاز رو ست میکنن و خیلی به ندرت پیش میاد که مشل CORS داشته باشید چون خود کتابخونه Allow میکنه. ــ ساناز رضایی در 6 سال قبل | |||
1 | ببینید مشکل CORS یک مشکل هست سمت مرورگر. برای اینکه این اطمینان حاصل ایجاد بشه که دقیقا مشکل از کد هست یا از هدر ها یا از مجوز ها و دسترسی ها، بنده پیشنهاد میکنم که با postman درخواست رو بفرستی و ببینی خروجی چی بر میگرده. اگه توی postman خروجی درست بود، اون موقع میشه بهتر روش کار کرد. ــ سجاد شفی زاده |
||
از چه فریم ورکی استفاده میکنی؟ شبیه لاراوله، درسته؟ پس تگ لاراول رو هم به سوالت اضافه کن که لاراول کارا بیان ببین. و اینکه میتونم بدونم چرا ناشناس پرسیدید سوالتون رو؟ :-) معمولا سوالات پزشکی و حقوقی رو گاها کاربرا ناشناس میپرسن چون دوست ندارن اطلاعات شخصیشون رو دیگران ببینن ولی شما که سوالتون برنامه نویسیه دیگه چرا؟ :-) ــ سعید مرادی در 6 سال قبل |
|||
بعد از ارسال درخواست، این ارور رو دریافت نمیکنید؟ Access-Control-Allow-Or igin ــ ساناز رضایی در 6 سال قبل |
|||
@ساناز.رضایی از vuejs استفاده میکنم ــ black ghost در 6 سال قبل | |||
@سجاد.شفی.زاده.★ داداش میدونم فقط نمیدونم چطوری حلش کنم ــ black ghost در 6 سال قبل | |||
هدرهای dataType: "JSON", و Accept: "text/plain; charset=utf-8" رو هم توی کدت فرانتت موقع ارسال درخواست، یکی یکی چک کن ببین مشکل حل میشه یا نه. ــ سعید مرادی در 6 سال قبل |
|||
@ساناز.رضایی شما دیگه سمت کلاینت مشکلی پیش نمیاد ــ black ghost در 6 سال قبل | |||
ببینید من هدر Authorization رو اضافه میکنم این طور میشه ــ black ghost در 6 سال قبل | |||
خب هدر Authorization رو اضافه نکن. کسی مجبورتون نکرده که. ضمنا من کلاینتم با react نوشته میشه معمولا و مشکل شما رو نداشتم. ری اکت خودش هدرهای مورد نیاز رو ست میکنه. ــ ساناز رضایی در 6 سال قبل | |||
دوست عزیز زمانی باید هدر Authorization رو هم توی سرور بفرستی که مکانیسم کلی login و شناسایی کاربرت از طریق توکنی توی header ارزیابی بشه. اگه همچین سیستمی رو راه ننداختی و کلا یک جور دیگه ای داری کاربرات رو شناسایی میکنی، نیازی نیست هدر Authorization رو استفاده بکنی. ــ سروش قادری نسب در 6 سال قبل |
|||
@ساناز.رضایی ببین این رو هم اضافه میکنم همون میشه. xhr.setRequestHeader('X- Parsian-Token','applicat ion/x-www-form-urlencode d'); ــ black ghost در 6 سال قبل | |||
کانتنت تایپ باید اینجوری باشه: contentType: "application/json; charset=utf-8", . فکر می کنم x-www-form-urlencode مال زمانیه که یک فرم HTML سابمیت میشه. نه وقتی که شما پارامترها رو به صورت ajax میفرستید. ــ ساناز رضایی در 6 سال قبل |
|||
اینم دقیقا کسی مثل شما پرسیده. چون هم داشته از لاراول و هم ویوجی اس استفاده میکرده. بد نیست یک نگاهی بهش بکنید. ــ ساناز رضایی در 6 سال قبل | |||
@ساناز.رضایی ببینید یه پارامتر یا یه هدر اضافه میکنم میخواد مطمِن بشه درخواست options میفرسته ــ black ghost در 6 سال قبل | |||
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at آدرس بدون عنوان . (Reason: CORS preflight channel did not succeed).[Learn More] Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at آدرس بدون عنوان . (Reason: CORS request did not succeed).[Learn More] ــ black ghost در 6 سال قبل | |||
این ارور رو میده ــ black ghost در 6 سال قبل |