@@ -95,6 +95,8 @@ class GuestAuth(Auth):
9595
9696 guest_token : str
9797 security_token : Optional [str ] = None
98+ # The CSRF token is configurable per-server, so we need to store it if the server provides it, but it isn't mandatory
99+ # See https://github.com/filesender/filesender/issues/2732#issuecomment-4609996918
98100 csrf_token : Optional [str ] = None
99101
100102 async def prepare (self , client : AsyncClient ):
@@ -113,15 +115,15 @@ async def prepare(self, client: AsyncClient):
113115 for cookie in client .cookies .jar :
114116 if cookie .name .lower () == "csrfptoken" :
115117 self .csrf_token = cookie .value
116- if self .csrf_token is None :
117- logger .warning ("No CSRF token could be found!" )
118118
119119 def sign (self , request : SignType , client : AsyncClient ) -> SignType :
120120 request .url = request .url .copy_add_param ("vid" , self .guest_token )
121- if self .security_token is None or self . csrf_token is None :
121+ if self .security_token is None :
122122 raise Exception (
123123 ".prepare() must be called on the GuestAuth before it is used to sign requests"
124124 )
125125 request .headers ["X-Filesender-Security-Token" ] = self .security_token
126- request .headers ["csrfptoken" ] = self .csrf_token
126+ if self .csrf_token is not None :
127+ # If we have a CSRF token, the server requires it so we should use it
128+ request .headers ["csrfptoken" ] = self .csrf_token
127129 return request
0 commit comments