PDA

View Full Version : سوال: ارسال مقادیر با get و post از خارج از سایت



milad_d993
شنبه 30 آبان 1394, 17:29 عصر
سلام دوستان
امکان اینکه درخواست خارج از سایت باشه هستش؟؟؟
فایل index.html رو از کامپیوترم اجرا میکنم ولی جواب نمیده :(



<!DOCTYPE html>
<html>
<head>
<script src="jquery-1.11.3.min.js"></script>
<script>
$(document).ready(function(){
$("#btn").click(function(){
$.get("www.milad.com/project1/index.php",{name:"milad"},function(data){
alert(data);
});
});
});
</script>
</head>
<body>
<button id="btn">click me</button>
</body>
</html>

us1234
شنبه 30 آبان 1394, 19:01 عصر
مرورگر اجازه این کار را نمیدهد .

در خصوص cross domain ajax تحقیق کنید .

milad_d993
سه شنبه 03 آذر 1394, 15:36 عصر
مرورگر اجازه این کار را نمیدهد .

در خصوص cross domain ajax تحقیق کنید .

فقط تابع مربوط به error اجرا میشه؛ مشکل کجاست؟؟؟



<!DOCTYPE html>
<html>
<head>
<script src="jquery-1.11.3.min.js"></script>
<script>
$(document).ready(function(){
$("#btn").click(function(){
$.ajax({
url: "http://www.milad.com/project1/index.php",
type: "GET",
data: {name:"milad"},
dataType: "html",
crossDomain: true,
success: function(responseData, textStatus, jqXHR) {
var value = responseData.someKey;
},
error: function (responseData, textStatus, errorThrown) {
alert('GET failed.');
}
});
});
});
</script>
</head>
<body>
<button id="btn">click me</button>
</body>
</html>

sobhdam
سه شنبه 03 آذر 1394, 22:39 عصر
مرورگرها اجازه این کارو نمیدن یعنی شما نمیتونی یه فایل رو از خارج از سایت خودت فراخوانی کنی چون اونجوری شما میتونی به محتوای وب سایت های دیگه از طریق مرورگر کاربران دسترسی پیدا کنی و یه نوع هکه و مشکل امنیتی داره

اگه project1/index.php (http://www.milad.com/project1/index.php) یه فایل جاواست شما میتونی از $.getscript استفاده کنی

البته اینو قبلش بگم شما باید قبل از www پروتکل http:// رو بیاری

milad_d993
چهارشنبه 04 آذر 1394, 09:47 صبح
مرورگرها اجازه این کارو نمیدن یعنی شما نمیتونی یه فایل رو از خارج از سایت خودت فراخوانی کنی چون اونجوری شما میتونی به محتوای وب سایت های دیگه از طریق مرورگر کاربران دسترسی پیدا کنی و یه نوع هکه و مشکل امنیتی داره

اگه project1/index.php (http://www.milad.com/project1/index.php) یه فایل جاواست شما میتونی از $.getscript استفاده کنی

البته اینو قبلش بگم شما باید قبل از www پروتکل http:// رو بیاری

سمت سرور باید node.js باشه؟؟؟

پس این crossDomain: true, واسه چیه؟؟؟

djtrex
چهارشنبه 04 آذر 1394, 12:31 عصر
سمت سرور باید node.js باشه؟؟؟

پس این crossDomain: true, واسه چیه؟؟؟

دوست عزیز چرا نمی نویسی با phonegap داری کار میکنی؟!
http://barnamenevis.org/showthread.php?513140-%D9%85%D8%B4%DA%A9%D9%84-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D8%B3%D8%B1%D9%88%D8%B1-%D8%AF%D8%B1-%D9%81%D9%88%D9%86-%DA%AF%D9%BE


به صورت پیشفرض شما نمیتونید از روی یه دومین دیگه (حتی ساب دومین) به یه دومین دیگه درخواست ajax بفرستید. (برای مشکل امنیتی). برای اینکار مکانیزم CORS پیشنهاد شده که توی http header موقع response تعریف میشه که کلاینت (مرورگر) مجاز به ارسال درخواست به کدام دومینها است (یا همه مجاز هستند!)
https://en.wikipedia.org/wiki/Cross-origin_resource_sharing
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

اما از اونجایی که با phonegap کار میکنید میتونید دومینتون رو توی لیست سفید قرار بدید:
http://docs.phonegap.com/en/4.0.0/guide_appdev_whitelist_index.md.html
http://stackoverflow.com/questions/18263578/ajax-request-from-phonegap-android-fails
http://stackoverflow.com/questions/19003025/phonegap-cross-domain-ajax-post-request-not-working-on-android

---------
در ضمن از تکنیک ها یا روش های دیگه مثل jsonp یا websocket یا ... هم میتونید استفاده کنید!!
---------

+ نمیدونم شما چه طوری برداشت کردید که nodejs باید حتما سمت سرور باشه؟!!! (شاید به خاطر اینکه گفتند فایل جاوا(اسکریپت - اگه بنا بر مخفف کردن هست از js استفاده کنید نه جاوا! جاوا یه چیز دیگه است!))

sobhdam
پنج شنبه 05 آذر 1394, 17:01 عصر
منظور من همون جاوا اسکریپت js بود ببخشید
دوستمون درست میگه
من کار نکردم و چیزی که الان سرچ کردم مثل اینکه میشه در هدر فایل index.php دامین های مجاز برای دسترسی رو به سمت کاربر ارسال کنی

البته بازم میگم من تا حال این روشو کار نکردم ولی مثل اینکه میشه

برای موردی هم که گفتم شما میتونی محتوای index.php رو به صورت زیر قرار بدی
$ontent1='';
$content2='';
و از طریق تابع گت اسکریپت جی کوری اونو اینکلود کنی که محتوای این فایل به صورت js در صفحه ضمییه میشه