bad request
mittorn 9 Августа, 2011 - 20:07
Полдня пропарился, не знаю, куда п;сать. Gentoo это не касается, но на форумах, посвящённых разработки web-приложений я не зарегистрирован, решил попробовать написать здесь.
Имеется cgi скрипт следующего содержания:
#!/usr/bin/python # -*- coding: utf-8 -*- import socket import base64 import cgitb cgitb.enable() print 'Content-type: text/html' print '' print '<title>omts</title>' import os r=os.getenv('PATH_INFO') url=base64.urlsafe_b64decode(r.split('/')[1]) sock=socket.socket(socket.AF_INET) sock.connect((url.split('/')[2],80)) req='GET '+url+' HTTP/1.1\n\rHost: ya.ru\n\rUser-Agent: Wget' socket._fileobject(sock).write(req) #s=sock.recv(1024) s=base64.b64encode(req+socket._fileobject(sock).read()) s=s.replace('0','а') s=s.replace('1','б') s=s.replace('2','в') s=s.replace('3','г') s=s.replace('4','д') s=s.replace('5','е') s=s.replace('6','ё') s=s.replace('7','ж') s=s.replace('8','з') s=s.replace('9','и') s=s.replace('+','й') s=s.replace('/','к') print s
В PATH_INFO передаётся кодированый url страницы и он выводит кодированое содержимое, нужно, чтоб протянуть страницу через opera mini.
Но при запросе любого url получается bad request
Если убрать всё после url, запрос принимает. Пробовал разные вариации параметров запроса (Accept и пр) - не помогло.
За грубый скрипт не ругайте - до оптимизации не дошло.
Если в PATH_INFO передавать запрос от браузера, то работает, правда, сказывается ограничение длины адреса на хостинге.
»
- Для комментирования войдите или зарегистрируйтесь
(*)
Предлагаю не сокеты открывать, а pycurl использовать. Для отладки выставив pycurl.VERBOSE в 1
mittorn написал(а): Но при
Где получается-то? В браузере? В Opera Mini?
Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.
Всё это состоит из 2х частей:
Всё это состоит из 2х частей: сервер и клиент. Сервер - cgi-скрипт, выложенный выше, работает на хостинге, а клиент - локальный прокси, запрашивающий с сервера страницы через OMPD. До этого был почти такой же скрипт, но кодировал он весь запрос, всё работало отлично, пока не ограничили длину url до 700 (примерно) байт. Запросы перестали проходить. Пока временно решил сделать так. Аналогичный скрипт на urllib работает, но не пропускает заголовки и не работают картинки.
Локальный оверлей растёт