|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
Хотел потестить кроссдоменный ajax-запрос... Но примеры этого на ПХП и там используется процедура (или функция) Код: php 1.
С ее помощью прописываются заголовки ответа сервера... У нас-то как такое прописать? Т.е. как прописать заголовки ответа сервера? ---------- Cache for Windows (x86-64) 2012.2.2 (Build 801) Fri Dec 7 2012 12:08:23 EST ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 09:19 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
Подправьте заголовок темы А то буквы местами переставил... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 09:22 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
krvsa, %response.SetHeader() ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 09:25 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
doublefintkrvsa, %response.SetHeader() ? Сейчас попробую... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 09:32 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
Написал так... <script language='cache' runat='server'> d %response.SetHeader("Access-Control-Allow-Origin","*") d %response.SetHeader("Access-Control-Allow-Methods","GET, PUT, POST, DELETE, OPTIONS") d %response.SetHeader("Access-Control-Max-Age","1000") d %response.SetHeader("Access-Control-Allow-Headers","Content-Type, Authorization, X-Requested-With") s mvrNS=$g(^mvr,"mvr") s view=$g(%request.Data("view",1)) s table=$g(%request.Data("table",1)) s page=$g(%session.Data(table_view_"Page")) &html<#(page)#,> d DATA^|mvrNS|mvr.sys.csp.list(view,table) </script> На приеме получаю "success" /* Отправка ajax запроса */ function sendAjax() { $('#mvr_create').stop().fadeIn(); var url='/mvr/ajax/list/data.csp'; //var url=mvr_urltask+'ajax/list/data.csp'; var view=$('#mvr_view').val(); var table=$('#mvr_table').val(); $.post( url, { view: view, table: table }, function (Data,Status) { alert(Status) answerTest(Data,Status); } ); return true; }; /* Получение ответа от AJAX запроса */ function answerTest(Data,Status) { var i=Data.indexOf(','); var val=+Data.substring(0,i); document.getElementById('mvr_list_control_page').value=val+1; val=Data.substring(i+1,Data.length); $('#mvr_list_data').html(val); clearTimeout(mvr_ajax_timer); $('#mvr_create').stop().fadeOut(); } Но ответ пуст! Все упирается в сессию и область CSP-задач... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 09:50 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
Задачка /mvr выполняется в одной области, а /soiarh в другой... Нужно как-то передать имя области на сервер... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 09:52 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
Передал и область... /* Отправка ajax запроса */ function sendAjax() { $('#mvr_create').stop().fadeIn(); var url='/mvr/ajax/list/data.csp'; //var url=mvr_urltask+'ajax/list/data.csp'; var view=$('#mvr_view').val(); var table=$('#mvr_table').val(); $.post( url, { view: view, table: table, taskNS: '#($g(%session.Data("taskNS")))#' }, function (Data,Status) { alert(Data) alert(Status) answerTest(Data,Status); } ); return true; }; Сервер ее получил... Но ответ опять пуст... <script language='cache' runat='server'> d %response.SetHeader("Access-Control-Allow-Origin","*") d %response.SetHeader("Access-Control-Allow-Methods","GET, PUT, POST, DELETE, OPTIONS") d %response.SetHeader("Access-Control-Max-Age","1000") d %response.SetHeader("Access-Control-Allow-Headers","Content-Type, Authorization, X-Requested-With") s taskNS=$g(%request.Data("taskNS",1)) zn taskNS &html<-#(taskNS)#-> s mvrNS=$g(^mvr,"mvr") s view=$g(%request.Data("view",1)) s table=$g(%request.Data("table",1)) s page=$g(%session.Data(table_view_"Page")) &html<#(page)#,> d DATA^|mvrNS|mvr.sys.csp.list(view,table) </script> ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 09:57 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
Все уперлость в сессию... У меня вся информация по областям в ней, а при кроссдоменном обращении сессия "не передается"... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 10:04 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
krvsaВсе уперлость в сессию... У меня вся информация по областям в ней, а при кроссдоменном обращении сессия "не передается"... а зачем передавать сессию, запрос кросс-доменный предполагает обращения между совершенно разными приложениями. и в каждом это должны быть разные сессии ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 10:20 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
krvsa, ведь все это происходит на одном и том же сервере? %CSP.Session - хранимый класс, можно открыть его объект, получить доступ к данным... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 10:23 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
Разобрался и с областями... Но все равно получаю Код: vbnet 1.
Хотя sql-запрос запрос нормальный и выполняется в нужной области... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 10:23 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
doublefintkrvsa, ведь все это происходит на одном и том же сервере? Да. doublefint%CSP.Session - хранимый класс, можно открыть его объект, получить доступ к данным... Да я даже параметрами все передал... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 10:27 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
krvsaХотя sql-запрос запрос нормальный и выполняется в нужной области... Выяснил, что эт не так... Запрос пока не такой, какой надо. Буду смотреть что мешает его формированию... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 10:28 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
Неее... Не получится у меня кроссдоменности. Сессии разные, а в них все ключевые данные... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 10:46 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
в одной областиClass test.page Extends %CSP.Page { ClassMethod OnPage() As %Status { #dim %session as %CSP.Session s ssid = %session.SessionId s %session.Data("something")="wrong" &html<<!doctype html><html><head> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type='text/javascript'> $(function(){ $.ajax( { url: '#(..Link("/user/test.data.cls"))#' , data: { 'ssid': '#(ssid)#' } }).done( function( data ){ $( data ).appendTo( $("body") ); }); }) </script></head> <body></body></html>> Quit $$$OK } } В другой областиClass test.data Extends %CSP.Page { ClassMethod OnPage() As %Status { s ssid=$g(%request.Data("ssid",1)) #dim session as %CSP.Session s session = ##class(%CSP.Session).%OpenId( ssid,,.sc ) if sc && $IsObject(session) { m data = session.Data w "<pre>" zw data w "</pre>" } else { w $classname() } Quit $$$OK } } ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 14:12 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
doublefint , спасибо за информацию. Но в моем случае "быть на одном сервере" это лишь частный случай... Да и не стоит оно того... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 14:40 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
Да и такой номер прокатит только если сессии не хранимые (Preserve=0), иначе открыть сессию не получится ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 14:52 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
DAiMor только если сессии не хранимые (Preserve=0), иначе открыть сессию не получится В одной областиClassMethod OnPreHTTP() As %Boolean [ ServerOnly = 1 ] { s %session.Preserve=1 Q 1 } В другой области ... s nolock=0, session = ##class(%CSP.Session).GetSession( ssid, "", nolock, "" ) ... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 18:40 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
doublefintDAiMor только если сессии не хранимые (Preserve=0), иначе открыть сессию не получится В одной областиClassMethod OnPreHTTP() As %Boolean [ ServerOnly = 1 ] { s %session.Preserve=1 Q 1 } В другой области ... s nolock=0, session = ##class(%CSP.Session).GetSession( ssid, "", nolock, "" ) ... Ну если так, то конечно ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 18:46 |
|
[CSP] Кроссдоменный ajax-запрос
|
|||
---|---|---|---|
#18+
krvsa"быть на одном сервере" это лишь частный случай. В сессии мало магии - это хранимый класс с нестандартной схемой хранения( т.е в глобале ). Общий случай - доступ с одного сервера к глобали на другом сервере? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2013, 18:49 |
|
|
start [/forum/topic.php?fid=39&msg=38444044&tid=1557034]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 17ms |
total: | 300ms |
0 / 0 |