۴ Amir Hossein Sattari
ارور موقع submit
جامعه پی اچ پی ایجاد شده در ۳۱ فروردین ۱۴۰۲

سلام

موقع submit کردن اطلاعات با دو ارور زیر در کنسول مواجه میشم

Access to XMLHttpRequest at 'http://localhost/7map/proccess/addLocation.php' from origin 'http://7learn.php' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

و

uery.js:8625   POST http://localhost/7map/proccess/addLocation.php net::ERR_FAILED 200 (OK)

ممون میشم کمکم کنید.

سلام،

علت خطا این است که مبدأ درخواست(origin) با مقصد(Host) برابر نیست. یعنی 7learn.php و localhost برابر نیستند. یا باید سمت سرور این اجازه دسترسی رو بدید یا روی یک آدرس کار کنید.

محسن موحد ۳۱ فروردین ۱۴۰۲، ۲۲:۱۲

سرچ کردم و به این نتیجه رسیدم که باید از

header("Access-Control-Allow-Origin: http://7Learn.php");

استفاده کرد.

اگه درست متوجه شدم ممنون میشم راهنمایی کنید به چه شکل و در کجا باید ازش استفاده کنم.

Amir Hossein Sattari ۰۱ اردیبهشت ۱۴۰۲، ۰۲:۰۳

ببینید چون شما دارید روی localhost یعنی یک سرور(از لحاظ پوشه و فایل بندی پروژه) کار میکنید، کافیه آدرس هارو یکی کنید. یعنی شما سایت رو با 7learn.php در مرورگر باز میکنید، پس درخواست‌های ajax رو هم به آدرس 7learn.php/proccess/addLocation.php ارسال کنید.(البته فرض میکنم 7learn.php به localhost/7map اشاره میکند.)

اگر هم بخواهید سمت سرور مدیریت کنید، میتونید از طریق وب سرور (برای apache از فایل htaccess) و همچنین از طریق فایل php هدری که اوردید رو ابتدای فایل ست کنید و اجازه دسترسی بدید.

در مورد CORS میتونید تحقیق کنید. این موضوع برای درخواست‌های از سمت مرورگر به Host ای متمایز از origin اتفاق میوفته.(مثل ارسال فرم، درخواست ajax)

یک مورد هم اضافه کنم، پروژه هایی که انجام میدید ممکنه به همچین موردی برخورد کنید، مثلا میخواهید به یک api درخواست ارسال کنید و با خطای CORS مواجه میشوید. اینجا اگر مدیر سرور سمت api اجازه نداده باشد باید از سمت سرور خودتون درخواستی ارسال کنید(مثال: curl) و اگر ajax بخواهید پیاده کنید، درخواست ajax رو به سرور خودتون میزنید و از سمت سرور curl به سمت api.

بهترین پاسخ
محسن موحد ۰۲ اردیبهشت ۱۴۰۲، ۰۲:۵۱

ممنون

Amir Hossein Sattari ۰۲ اردیبهشت ۱۴۰۲، ۱۸:۵۰