PDA

View Full Version : سوال: آیا میشود با juqery و یا ajax یک صفحه را با cookie خاص باز کرد؟



generalhak
یک شنبه 13 مرداد 1392, 16:37 عصر
سلام
میخوام محتویات یک صفحه وب رو بگیرم و این کار میخوام با ajax و juqery انجام بشه و میخوام وقتی میخوام اون صفحه رو بگیرم با یک کوکی خاص وصل بشه به صفحه چون اون صفحه که میخوام محتویات رو بگیرم ازش باید عضو باشی تا محتویات رو نشون بده و وقتی عضو بشی یک cookie بهت میده که از طریق اون میفهمه وارد سایت شدی ...
همچین کاری میشه ؟
دقیقا مثل curl در php میخوام که میشه باهاش یک صفحه با کوکی و یا ریفر خاص باز کرد... اما بنا به دلایلی نمیشه از php استفاده کنم ...

cups_of_java
یک شنبه 13 مرداد 1392, 19:34 عصر
می تونی امتحان کنی اما ممکنه سرورت نپذیرتش! تازه اگر مسئله Cross Domain نداشته باشی.

اگر پلاگین cookie جی کوئری رو داری که یک خطه:
$.cookie("test", 1);

اگر نداری هم توی صفحه با یه همچین کدی میتونی کوکی رو ست کنی قبل از ajax زدنت:
function Set_Cookie( name, value, expires, path, domain, secure )
{
// set time, it's in milliseconds
var today = new Date();
today.setTime( today.getTime() );

/*
if the expires variable is set, make the correct
expires time, the current script below will set
it for x number of days, to make it for hours,
delete * 24, for minutes, delete * 60 * 24
*/
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );

document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
( ( path ) ? ";path=" + path : "" ) +
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
}

generalhak
یک شنبه 13 مرداد 1392, 22:09 عصر
می تونی امتحان کنی اما ممکنه سرورت نپذیرتش! تازه اگر مسئله Cross Domain نداشته باشی.

اگر پلاگین cookie جی کوئری رو داری که یک خطه:
$.cookie("test", 1);

اگر نداری هم توی صفحه با یه همچین کدی میتونی کوکی رو ست کنی قبل از ajax زدنت:
function Set_Cookie( name, value, expires, path, domain, secure )
{
// set time, it's in milliseconds
var today = new Date();
today.setTime( today.getTime() );

/*
if the expires variable is set, make the correct
expires time, the current script below will set
it for x number of days, to make it for hours,
delete * 24, for minutes, delete * 60 * 24
*/
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );

document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
( ( path ) ? ";path=" + path : "" ) +
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
}
ممنون از پاسخت عزیز
ولی خوب معلومه نمیشه چون کوکی که من ست کنم از دامنه خودم هست دیگه ...
کلا سوال اصلی اینه که نمیشه با آجاکس کوکی به سرور ارسال کرد ؟!

cups_of_java
یک شنبه 13 مرداد 1392, 23:44 عصر
یا شما منظور من رو نگرفتی یا اینکه سوالت رو خوب نمی پرسی یا اینکه اصن خودتم مسئله رو درست نمیدونی!


ولی خوب معلومه نمیشه چون کوکی که من ست کنم از دامنه خودم هست دیگه ...
کوکی مال کلاینته! دامنه مال سرور! شما کوکی ای که از یه کلاینت گرفتی میخوای تو یه کلاینت دیگه بزاری که لاگین فرض شه و کارشو بکنه! این به دامنه کاری نداری که!


کلا سوال اصلی اینه که نمیشه با آجاکس کوکی به سرور ارسال کرد ؟!
شما وفتی کوکی رو توی document ست کنی ajax که میزنی مرورگر میزارتش تو request برات! سرور هم میگیرتش چکش میکنه! باید ببینی cookie تو سرورت چقدر سر سختانه داره بررسی میشه!

اصولن یه کوکی رو کلاینت های مختلف می تونن با هم استفاده کنن و سرور همشون رو قبول باید بکنه!

jalil_gh
دوشنبه 14 مرداد 1392, 10:33 صبح
کلا سوال اصلی اینه که نمیشه با آجاکس کوکی به سرور ارسال کرد ؟!
شما وقتی یه درخواست آجاکس به سرور خودتون ارسال میکنید کوکی‌ها هم به همراه اون درخواست ارسال میشن و شما لازم نیست کار خاصی انجام بدید
ولی وقتی شما یه درخواست آجاکس به یه سرور دیگه ارسال میکنید به دلایل امنیتی کوکی‌ها ارسال نمیشن.

cups_of_java
دوشنبه 14 مرداد 1392, 11:17 صبح
ولی وقتی شما یه درخواست آجاکس به یه سرور دیگه ارسال میکنید به دلایل امنیتی کوکی‌ها ارسال نمیشن.

در اون صورت که اصن درگیر مسله Cross Domain میشی. اگر سرور دوم هم مال خودته باید پشت یک Reverese Proxy قرار بگیرن. اگر سرور دوم مال خودت نیست و کلن تو یه دامنه دیگست باید Cross Domain رو پشتیبانی کنه و توی مرورگرت هم فعالش کنی.