Як відкрити довгий url в браузері
Як відкрити довгий URL в браузері?
ShellExecute при спробі відкрити довгий URL обрізає його до 2083 символів.
А потрібно стартанути URL довжиною в 4К.
Підкажіть, як обійти проблему, не використовуючи зовнішні файли (на кшталт завантаження з підготовленого html з перенаправленням)
"Війна і мир" в скороченому варіанті.
> "Війну і мир" я зміг прочитати. )
Ну ось є такі URL-й, так. Коли в URL вставляється хеш-код, що ідентифікує користувача.
Так є припущення?
> Так є припущення?
зробити по іншому. тому на дані в параметрах GET запиту є обмеження на довжину. имхо, тому що пам'ятаю смутно, Новомосковскл, начебто є. ось що буде при вставці цього url чотирьох кілобайтний в рядок браузера?
і на розмір виконуваної рядки є обмеження. (Робив як то так вставку листа в поточну поштову програму, так теж в якийсь момент перестало все передавати, розмір формованого тіла перевищив кордон. Довелося перейти на imapy тільки через це. І нічого)
> Ось що буде при вставці цього url чотирьох кілобайтний
> В рядок браузера?
Ось це треба перевірити в першу чергу, інакше немає сенсу рухатися далі.
Через COM-інтерфейс експлорера зробити можна, а ось як зробити, щоб в дефолтних системному браузері відкривалося нормально?
Дуже добре, значить можеш переходити до другого варіанту - використовуй CreateProcess + FindExecutable
> Коли в URL вставляється хеш-код, що ідентифікує користувача
це ж якої довжини хеш-код?
і чому це робиться через GET, а не через POST?
> І чому це робиться через GET, а не через POST?
А як ти post-параметри передаси сторінці. Я, в принципі, можу зрозуміти довгий URL. Ну там, pageId, userId, ще якась лабуда.
Але URL довжиною в 500 символів - це вже якесь збочення. Туди як мінімум десяток GUID-ів запхати можна.
GET запит не може бути більше 2Kb
> А як ти post-параметри передаси сторінці?
а як передаються всякі логіни-паролі? НЕ через Post ж
»Не через Post ж
тобто, не через Get ж)
взагалі, інформацію, яка представляє деяку цінність (коди, паролі всякі) у відкритому вигляді через урл краще не передавати
> А як передаються всякі логіни-паролі? НЕ через Post ж
Ну ти ж це справа не сторінці передаєш, а сервера.
А сторінці, наскільки я розумію, якусь інформацію можна передати тільки:
1. Усередині контенту респонса на http-reqwest
2. У вигляді куки.
3. У рядку URL.
А так, з точки зору CGI або FastCGI, GET - це те, що через змінні оточення прийшло, POST - то що в StdIn було запхати.
Виправте мене, якщо я не правий.
»Не сторінці передаєш, а сервера
так. тепер я не зрозумів.
Яка різниця? сторінка формується на сервері. Значить "передати сторінці" = "передати сервера"
Виправте мене, якщо я не правий
> Значить "передати сторінці" = "передати сервера"
Ось наскільки я розумію, це не зовсім так. Точніше - не обов'язково. У разі, коли йде пост-обробка даних на сторінці вже після отримання контенту.
приклад:
А, ччёрт, html-теги піди тут не пропустить. Ну да ладно.
Коротше, всередині body є тільки один div з id = "mydiv"
Далі в head додаємо такий скрипт:
function GetLocationParam (name) # XA0; var params = window.location.search.substr (1) .split ( "");
# XA0; for (i = 0; i
# XA0; # XA0;>
# XA0;> # XA0;
# XA0; return "";
>
function OnLoad () # XA0; var MyParam = GetLocationParam ( "id");
# XA0; var el = document.getElementById ( "mydiv");
# XA0; if (el) # XA0; # XA0; el.innerHTML = MyParam;
# XA0;>
>
І тепер викликаємо сторінку з доп.параметром? Id = siahfbiashbfdihb
І таких параметрів через URL можна передати чимало.
> GET - це те, що через змінні оточення прийшло
Точніше, через змінну оточення "QUERY_STRING"
так це ж у тебе клієнтський скрипт.
Якщо ти це мав на увазі під "передати сторінці", то так
Насправді, при передачі даних, які не влазять в урл (або які не бажано туди пхати), є 2 способи:
1. AJAX-запит якомусь http-Хендлер або веб-сервісу, який повертає щось, що можна тут же застосувати до документа. Через клієнтський скрипт.
2. POST-запит через submit або АЯКС, знову ж. Сервер в разі необхідності може отредіректіть користувача на потрібну сторінку після отримання та обробки запиту (як у випадку логіна, наприклад).
> Насправді, при передачі даних, які не влазять в
> Урл (або які не бажано туди пхати), є 2 способи:
>
> 1. AJAX-запит якомусь http-Хендлер або веб-сервісу,
> # XA0; який повертає щось, що можна тут же застосувати до
> Документу. Через клієнтський скрипт.
> 2. POST-запит через submit або АЯКС, знову ж. сервер в
> Якщо буде потреба може отредіректіть користувача на
> Потрібну сторінку після отримання та обробки запиту (як
> У разі логіна, наприклад).
>
У цьому випадку маємо 2 стрініци:
1. З віконцем Login-Pwd
2. Головна сторінка.
шлях, в якому сформований тільки набір кнопок, має сенс лише тоді, коли користувач не покидає основну сторінку. Щось типу швидкого перемикання користувача.
А в тому, що всю сторінку чисто на розмітці формувати - застрелитися можна. З іншого боку, на сервері лежать "шаблони" сторінок, в яких вже визначені стилі, зроблена якась попередня розмітка і т.д.
Грубо кажучи, це все-одно що ти модальну форму генерітся повністю з методу, ну типу:
procedure TForm1.InvokeSomeModalForm (Some_Params);
var
# XA0; frm. TForm;
# XA0; memo. TMemo;
# XA0; btnOK, btnCancel. TButton;
begin
# XA0; frm: = TForm.Create (nil);
# XA0; try
# XA0; # XA0; frm.SetBounds (.);
# XA0; # XA0; memo: = TMemo.Create (frm);
# XA0; # XA0; memo.Parent: = frm;
# XA0; # XA0; memo.SetBounds (.);
# XA0; # XA0; memo.Lines.Assign (Some_Params.MemoData);
# XA0; # XA0;
# XA0; # XA0; btnOK: = TButtonCreate (frm);
# XA0; # XA0; frm.ShowModal;
# XA0; # XA0; if # XA0; frm.ModalResult =.
Можна так зробити? Та легко. тільки кожну форму так описувати - гемор.
Ось, ІМХО, така ж фігня з повною генерацією розмітки сторінки на сервері.
> Підкажіть, як обійти проблему, не використовуючи зовнішні файли
а якщо створити тимчасовий * .url файл і згодувати його браузеру?
> А в тому, що всю сторінку чисто на розмітці формувати
> - застрелитися можна. З іншого боку, на сервері лежать
> "Шаблони" сторінок, в яких вже визначені стилі
так а в чому проблема на сервері це формувати?
грубо кажучи, є шаблон
% ADMIN_BUTTONS%
% USER_BUTTONS%
.
для звичайного користувача% ADMIN_BUTTONS% замінюється символом нового рядка. Це якщо якийсь скриптова мова типу пхп.
У aspx це взагалі вирішується установкою Visible контролю
> А в тому, що всю сторінку чисто на розмітці формувати
Ви маєте на увазі весь код сторінки стрінгами конкатеніровать? Такого вже давно ніхто не робить. Для цього купа движків написано. Наприклад асп.нет подивіться.
> Наприклад асп.нет подивіться.
За умовами мого завдання, у мене тільки Apach + cgi / fastcgi
> До речі а ось Микрософт заявило що пхп під іісом крутиться
> Спритніше ніж на апач.
У мене немає ніякого пхп. Голий apache + cgi / fastcgi.
> Можна подумати в сторону XSL Transformations, підшукати
> Енжін відповідний.
І я, підставивши в YUI.TreeView масив data1.treedata, а в YUI.ContextMenu масив Data1.menudata отримую готове дерево з прив'язаним до нього контекстним меню. А дані і дії в меню - в залежності від прав користувача.
І мені нафіг не потрібно морочитися, який зараз дизайн у сторінки. Мені потрібен один єдиний div з певним id, на якому це дерево з меню буде розгорнуто.
Пам'ять: 0.83 MB
Час: 0.048 c