Go: x/net/webdav: рдЯреВрдЯреА рдХрдбрд╝рд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЬреВрди 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: golang/go

рдЯреВрдЯреА рд╣реБрдИ рд▓рд┐рдВрдХ рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдПрдХ рдЧреИрд░-рд╕реВрдЪрдирд╛рддреНрдордХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

$ cadaver webdav://localhost:5555/api/v1/content                                                                                                                                         
dav:/api/v1/content/> ls etc
Listing collection `/api/v1/content/etc/': failed:
XML parse error at line 1: junk after document element

рд╡реЗрдмрдбрд╛рд╡ рд╕рд░реНрд╡рд░ рд╕реЗ рдореБрдЭреЗ рдпрд╣реА рдорд┐рд▓рддрд╛ рд╣реИ:

2016/06/27 14:52:42 http: multiple response.WriteHeader calls

рддреНрд░реБрдЯрд┐ file.go [1] рд╕реЗ рдЖрддреА рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдЯреВрдЯреА рд╣реБрдИ рд▓рд┐рдВрдХ рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╕реНрдЯреЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рдЗрд╕реЗ webdav.go walkFn [2] рдореЗрдВ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдЦреБрдж рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореБрджреНрд░рд┐рдд/рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВ рдкреВрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ (рдпрд╛рдиреА рд╡реЗрдмрдбрд╛рд╡ рдХреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдЗрд╕ рдкрд░ рдХреНрд░рд╢ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП) рдЗрд╕ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЯреВрдЯрд╛ рд╣реБрдЖ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

[1] https://github.com/golang/net/blob/master/webdav/file.go#L779
[2] https://github.com/golang/net/blob/master/webdav/webdav.go#L527

/рд╕реАрд╕реА @ рд╕рд╛рдЗрдорди3z

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдЕрднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ https://github.com/golang/net/blob/master/webdav/webdav.go#L557 рддреНрд░реБрдЯрд┐ рдорд┐рд▓рдиреЗ рдкрд░ рдмрд╕ рд╢реВрдиреНрдп рд▓реМрдЯрд╛рдХрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдареАрдХ рдХрд┐рдпрд╛

рдореИрдВрдиреЗ рдЕрдкрд╛рдЪреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдЯреВрдЯреЗ рд╣реБрдП рд╕рд┐рдореНрдмрд▓рд┐рдВрдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕реЗ рдЪреБрдкрдЪрд╛рдк рддреНрдпрд╛рдЧ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рд▓реЗрдХрд┐рди рдЖрдЬ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рдЧрд▓рдд рд╣реИред
рдпрд╣рд╛рдБ рджреЛрд╖рдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рд╡рд╛рдпрд░рд╢рд╛рд░реНрдХ рдЯреНрд░реЗрд╕ рд╣реИ

Host: 10.21.59.204
Depth: 1
Content-Type: application/xml
Apply-To-Redirect-Ref: T
Accept-Encoding: gzip, deflate
User-Agent: gvfs/1.28.2
Accept-Language: en-us, en;q=0.9
Connection: Keep-Alive
Content-Length: 235

<?xml version="1.0" encoding="utf-8" ?>
 <D:propfind xmlns:D="DAV:">
  <D:prop>
<D:creationdate/>
<D:displayname/>
<D:getcontentlength/>
<D:getcontenttype/>
<D:getetag/>
<D:getlastmodified/>
<D:resourcetype/>
  </D:prop>
 </D:propfind>HTTP/1.1 207 status code 207
Content-Type: text/xml; charset=utf-8
Date: Wed, 15 Mar 2017 09:00:40 GMT
Content-Length: 610

<?xml version="1.0" encoding="UTF-8"?><D:multistatus xmlns:D="DAV:"><D:response><D:href>/dav</D:href><D:propstat><D:prop><D:displayname></D:displayname><D:getlastmodified>Wed, 15 Mar 2017 08:59:55 GMT</D:getlastmodified><D:resourcetype><D:collection xmlns:D="DAV:"/></D:resourcetype></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat><D:propstat><D:prop><D:creationdate></D:creationdate><D:getcontentlength></D:getcontentlength><D:getcontenttype></D:getcontenttype><D:getetag></D:getetag></D:prop><D:status>HTTP/1.1 404 Not Found</D:status></D:propstat></D:response></D:multistatus>Internal Server Error

Webdav рдпреБрдХреНрддрд┐ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐

рдСрд▓рдкреНрд░реЙрдк рдФрд░ рдкреНрд░реЙрдкрдирд╛рдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдХрд┐рд╕реА рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ
рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕рдВрдкрддреНрддрд┐ рдореМрдЬреВрдж рд╣реИ рддреЛ рд╕рдВрдкрддреНрддрд┐
рдЪреБрдкрдЪрд╛рдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЕрднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ https://github.com/golang/net/blob/master/webdav/webdav.go#L557 рддреНрд░реБрдЯрд┐ рдорд┐рд▓рдиреЗ рдкрд░ рдмрд╕ рд╢реВрдиреНрдп рд▓реМрдЯрд╛рдХрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдареАрдХ рдХрд┐рдпрд╛

рдореИрдВрдиреЗ рдЕрдкрд╛рдЪреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдЯреВрдЯреЗ рд╣реБрдП рд╕рд┐рдореНрдмрд▓рд┐рдВрдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕реЗ рдЪреБрдкрдЪрд╛рдк рддреНрдпрд╛рдЧ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рд▓реЗрдХрд┐рди рдЖрдЬ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рдЧрд▓рдд рд╣реИред
рдпрд╣рд╛рдБ рджреЛрд╖рдкреВрд░реНрдг рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдПрдХ рд╡рд╛рдпрд░рд╢рд╛рд░реНрдХ рдЯреНрд░реЗрд╕ рд╣реИ

Host: 10.21.59.204
Depth: 1
Content-Type: application/xml
Apply-To-Redirect-Ref: T
Accept-Encoding: gzip, deflate
User-Agent: gvfs/1.28.2
Accept-Language: en-us, en;q=0.9
Connection: Keep-Alive
Content-Length: 235

<?xml version="1.0" encoding="utf-8" ?>
 <D:propfind xmlns:D="DAV:">
  <D:prop>
<D:creationdate/>
<D:displayname/>
<D:getcontentlength/>
<D:getcontenttype/>
<D:getetag/>
<D:getlastmodified/>
<D:resourcetype/>
  </D:prop>
 </D:propfind>HTTP/1.1 207 status code 207
Content-Type: text/xml; charset=utf-8
Date: Wed, 15 Mar 2017 09:00:40 GMT
Content-Length: 610

<?xml version="1.0" encoding="UTF-8"?><D:multistatus xmlns:D="DAV:"><D:response><D:href>/dav</D:href><D:propstat><D:prop><D:displayname></D:displayname><D:getlastmodified>Wed, 15 Mar 2017 08:59:55 GMT</D:getlastmodified><D:resourcetype><D:collection xmlns:D="DAV:"/></D:resourcetype></D:prop><D:status>HTTP/1.1 200 OK</D:status></D:propstat><D:propstat><D:prop><D:creationdate></D:creationdate><D:getcontentlength></D:getcontentlength><D:getcontenttype></D:getcontenttype><D:getetag></D:getetag></D:prop><D:status>HTTP/1.1 404 Not Found</D:status></D:propstat></D:response></D:multistatus>Internal Server Error

Webdav рдпреБрдХреНрддрд┐ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐

рдСрд▓рдкреНрд░реЙрдк рдФрд░ рдкреНрд░реЙрдкрдирд╛рдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдХрд┐рд╕реА рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ
рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕рдВрдкрддреНрддрд┐ рдореМрдЬреВрдж рд╣реИ рддреЛ рд╕рдВрдкрддреНрддрд┐
рдЪреБрдкрдЪрд╛рдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреВрдЯреЗ рд╣реБрдП рд▓рд┐рдВрдХ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ 4XX рд╕реНрдерд┐рддрд┐ рдХреЛрдб рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЕрдиреБрдорддрд┐ рд▓рдХреНрд╖реНрдпреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП 403 Forbidden , рдФрд░ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП 404 Not Found рдЧреИрд░-рдореМрдЬреВрдж рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдПред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рд▓реМрдЯреЗ FileSystem.OpenFile рдпрд╛ File.Stat рдореЗрдВ рд╣рд╕реНрддрд╛рдВрддрд░рдг http.StatusInternalServerError рдФрд░ рдХрд╛рд░рдг "http: golang.org/x/net/webdav.(*Handler рд╕реЗ рдЬрд╝рд░реВрд░рдд рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ response.WriteHeader рдХреЙрд▓) .рд╕рд░реНрд╡ рдПрдЪрдЯреАрдЯреАрдкреА (webdav.go:74)"

рдмрджрд▓реЗрдВ https://golang.org/cl/249797 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ: webdav: ignore os.PathError in PROPFIND

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

rsc picture rsc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ianlancetaylor picture ianlancetaylor  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

go101 picture go101  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mingrammer picture mingrammer  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

michaelsafyan picture michaelsafyan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ