none
Initiate FSSHTTP with Word 2019 RRS feed

  • Question

  • I want to implement my own FSSHTTP server to allow concurrent editing of Office files on said server.

    According to MS-OCPROTO section "Web Servers", old versions of Word, Excel and Powerpoint will issue an OPTIONS request on the server at first when opening a file. If the response contains the X-MSFSSHTTP header with value >=1.0, they will use FSSHTTP to access the file.

    I am now working with Word 2019. When it opens a file on my Sharepoint server I can see this behaviour with Fiddler. The X-MSFSSHTTP header is greater than 1.0 and the next request is a FSSHTTP request.

    But when I want to open a file on my own server, Word ignores my X-MSFSSHTTP and either attempts to open the file via WebDAV or issues a HEAD request and displays an error message, if I disable WebDAV.

    Is there something I'm missing? Another header maybe?

    Thursday, October 22, 2020 3:04 PM

All replies

  • Hi Patrick:

    I have alerted the open specifications team regarding your inquiry. A member of the team will be in touch soon,


    Regards, Obaid Farooqi

    Thursday, October 22, 2020 9:16 PM
    Owner
  • Hi Patrick, I will assist you with this issue. To clarify, pre 2019 versions of Word will open the file, but it fails with Word 2019. Is that correct?

    Mike Bowen

    Escalation Engineer Microsoft Open Specifications

    Friday, October 23, 2020 6:59 PM
  • Hi Patrick, It would be helpful if we can get some data from you to help analyze your situation. Could you please email dochelp at microsoft.com, so we can set up secure data transfer.

    Thanks,

    Mike Bowen

    Escalation Engineer Microsoft Open Specifications

    Friday, October 23, 2020 8:39 PM
  • Hi Mike,

    I wasn't able to test this behaviour with pre 2019 versions of Word, but it is specified this way for Office 2010 & 2013 in MS-OCPROTO. I was not able to find documentation for Office 2019.

    Monday, October 26, 2020 12:33 PM
  • Hi Mike,

    I will do so

    Monday, October 26, 2020 12:34 PM
  • The cause of this turned out to be issues with HTTP status codes for the OPTIONS and HEAD requests. For reference, pasted below is a sample node.js server that has the proper status codes to receive a request for an FSSHTTP response from Word. To run it you will need to install node.js. This sample only starts the conversation with Word, it DOES NOT implement FSSHTTP.

    Once you have installed node.js you can copy this example and save it as a .js file and then run:

    node.exe your_server_file_name.js

    This will start the server on port 3000.

    const { createServer } = require('http')
    const { parse } = require('url')
    
    const server = createServer((req, res) => {
      const reqUrl = parse(req.url).pathname
      console.log('server -> reqUrl', reqUrl)
      const method = req.method.toLowerCase()
      console.log('server -> method', method)
      if (reqUrl.startsWith('/documents') && !reqUrl.includes('/_vti_bin/cellstorage.svc')) {
        res.setHeader('Allow', reqUrl === '/documents' || reqUrl === '/documents/' ? 'OPTIONS' : reqUrl.endsWith('/') ? 'GET, OPTIONS' : 'HEAD')
        switch (method) {
          case 'head':
            res.statusCode = 405
            break
          case 'options':
            res.statusCode = 200
            break
          default:
            res.statusCode = 405
            break
        }
      } else if (reqUrl.includes('_vti_bin/cellstorage.svc')) {
        if (method === 'post') {
          res.statusCode = 200
          let body = ''
          req.on('data', chunk => {
            body += chunk.toString()
          })
          req.on('end', () => {
            console.log(parse(body))
            res.end('ok')
          })
        }
      }
      res.setHeader('X-MSFSSHTTP', '1.5')
      res.end()
    })
    
    server.listen(3000, err => {
      console.log('server running on port 3000')
    })
    


    Friday, October 30, 2020 12:55 AM