Стандартная аутентификация с Flash

Спасибо Тони Саффолку за проверку, примеры importlib ... Я создал этот крошечный модуль, и вы все можете его использовать, если он вам поможет. Отдай, даааа!

import timeit
import os
import inspect, importlib as implib
import textwrap as twrap

def src_modules(filename):
    assert (len(filename)>1)

    mod = implib.import_module(filename.split(".")[0])
    ml_alias = []
    ml_actual = []
    ml_together = []
    ml_final = []
    for i in inspect.getmembers(mod, inspect.ismodule):
        ml_alias.append(i[0])
        ml_actual.append((str(i[1]).split(" ")[1]))
        ml_together = zip(ml_actual, ml_alias)
    for t in ml_together:
        (a,b) = t
        ml_final.append(a+":="+b)

    return ml_final

def l_to_str(itr):
    assert(len(itr)>0)

    itr.sort()
    r_str = ""
    for i in itr:
        r_str += i+"  "
    return r_str

def src_info(filename, start_time=timeit.default_timer()):
    assert (len(filename)>1)

    filename_in = filename
    filename = filename_in.split(".")[0]

    if __name__ == filename:
        output_module = filename
    else:
        output_module = __name__

    print ("\n" + (80 * "#"))
    print (" runtime ~= {0} ms".format(round(((timeit.default_timer() - start_time)*1000),3)))
    print (" source file --> '{0}'".format(filename_in))
    print (" output via --> '{0}'".format(output_module))
    print (" modules used in '{0}':".format(filename))
    print ("  "+"\n  ".join(twrap.wrap(l_to_str(src_modules(filename)), 75)))
    print (80 * "#")

    return ""


if __name__ == "__main__":
    src_info(os.path.basename(__file__))


## how to use in X file:
#
# import print_src_info
# import os
#
# < ... your code ... >
#
# if __name__ == "__main__":
#     print_src_info.src_info(os.path.basename(__file__))


## example output:
#
# ################################################################################
#  runtime ~= 0.049 ms
#  source file --> 'print_src_info.py'
#  output via --> '__main__'
#  modules used in 'print_src_info':
#   'importlib':=implib  'inspect':=inspect  'os':=os  'textwrap':=twrap
#   'timeit':=timeit
# ################################################################################
6
задан Andrew Swan 28 October 2009 в 23:23
поделиться

2 ответа

@Flax: да, я не могу больше согласиться с флеш-безопасностью с заголовками HTTP. Но есть еще один способ сделать это, но для этого потребуется немного поработать. Попробуйте использовать Socket вместо URLLoader, потому что Socket не имеет таких ограничений. Итак, для HTTP-запроса откройте сокет для порта 80 сервера ( http://yoursite.com/ ). Как только он будет подключен к серверу, отправьте все заголовки HTTP-запроса. Затем в SocketDataEvent проанализируйте данные и прочтите (или удалите) заголовки ответа и продолжите работу с данными.

3
ответ дан 10 December 2019 в 00:40
поделиться

Я удивлен, что вы даже смогли заставить его работать с запросом POST . В декабре 2007 года Flash Player был обновлен, чтобы явно запретить Заголовок авторизации . Я предполагаю, что с тех пор они снова разрешили это. Но я был бы удивлен этим. Редактировать : согласно комментарию @ derFunk, оказалось, что на самом деле заголовок был впоследствии повторно разрешен, хотя при его отправке в другой домен он должен быть явно разрешен в crossdomain.xml .

Помимо конкретных проблем с заголовком Authorization , я почти уверен, что Flash Player будет отправлять только пользовательские заголовки запросов с запросом POST . Извините, у меня нет ссылки на это, но в моей компании мы широко используем Flash Player для работы с веб-сервисами Restful, и нам пришлось реализовать всевозможные обходные пути, чтобы все работало.

В итоге, Flash Player имеет ужасную поддержку для HTTP. Фактически, наш набор обходных путей активируется путем отправки заголовка запроса X-Crippled-Client: true , который сообщает нашим службам интерпретировать запросы и отправлять ответы искаженными способами. Это настоящая боль в заднице.

Извините, я ничем не могу помочь ... удачи!

который сообщает нашим службам, что нужно интерпретировать запросы и отправлять ответы искаженными способами. Это настоящая боль в заднице.

Извините, я ничем не могу помочь ... удачи!

который сообщает нашим службам, что нужно интерпретировать запросы и отправлять ответы искаженными способами. Это настоящая боль в заднице.

Извините, я ничем не могу помочь ... удачи!

5
ответ дан 10 December 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: