3

Django で Spyne で基本認証を使用するにはどうすればよいですか? 以下を試しましたが、うまくいきません。WSDL ページ ファイルは問題なく表示できますが、実際に SayHello を Web サービスとして呼び出そうとすると、403 FORBIDDEN 応答が返されます。403 は CSRF に関連していると思いますが、csrf_exempt で回避できませんか? ところで、logged_in_or_basicauth は次のスニペットからのものです: http://djangosnippets.org/snippets/243/

class CapsWebService(ServiceBase):
    @rpc(String, Integer, _returns=Iterable(String))
    def SayHello(ctx, name, times):
        for i in xrange(times):
            yield 'Hello, %s' % name

caps_web_service = csrf_exempt(DjangoApplication(Application(
    [CapsWebService], 'solutions.sfcs', in_protocol=Soap11(), out_protocol=Soap11(), interface=Wsdl11(),
)))

@logged_in_or_basicauth()
def foo_view(request):
    logger.debug('views.foo_view()')
    return caps_web_service(request)
4

1 に答える 1

6

あなたは試すことができます

foo_view = csrf_exempt(foo_view)

foo_viewの定義の下。次に、他の周りにcrsf_exemptは必要ありません

caps_web_service = DjangoApplication(Application(
    [CapsWebService], 'solutions.sfcs', in_protocol=Soap11(), out_protocol=Soap11(),         interface=Wsdl11(),
))
于 2013-03-14T12:36:13.750 に答える