3

Office 365 ne renvoie pas le X-BackendOverrideCookie dans les en-têtes de réponse.Office 365 EWS ne renvoie pas X-BackendOverrideCookie

Je définis correctement X-AnchorMailbox et X-PreferServerAffinity dans les en-têtes de demande. Cela ne déclenche pas X-BackendOverrideCookie à renvoyer, comme il est dit dans MSDN. Pourquoi cela arrive-t-il?

En attendant, j'ai essayé la même chose avec un Exchange 2016 sur site. Ici, je ne définis même pas X-AnchorMailbox et X-PreferServerAffinity et je récupère le X-BackendOverrideCookie dans chaque réponse. Ce n'est pas bon non plus, puisque j'ai besoin de gérer l'affinité pour les groupes de notifications push et push, et j'ai besoin de configurer ce cookie quand je veux, et de ne pas le configurer toujours par défaut.

Edit 1:

Le flux va comme ceci. J'envoie la demande d'abonnement en utilisant JS. Pour ce faire, j'utilise lather pour intégrer ma demande au format SOAP.

Voici comment cette opération ressemble à:

var impersonate = ‘[email protected]’ 

var subscribe = { 
     "m:Subscribe": { 
        "m:PullSubscriptionRequest": { 
         "t:FolderIds": { 
          "t:DistinguishedFolderId": { 
           attributes: [{ 
            'Id': this.distinguishedFolderId 
           }] 
          } 
         }, 
         "t:EventTypes": [{ 
          "t:EventType": "CreatedEvent" 
         }, { 
          "t:EventType": "DeletedEvent" 
         }, { 
          "t:EventType": "ModifiedEvent" 
         }], 
         "t:Timeout": "10" 
        } 
       } 
    }; 


soapHeader = { 
       “t:ExchangeImpersonation": { 
        "t:ConnectingSID": { 
         't:SmtpAddress': impersonate 
        } 
       } 
      } 

lather.up({ 
       body : requestName,   
       headers : { 
        Authorization : lather.basicAuth(this.username, this.password),    
        'X-AnchorMailbox': impersonate, 
        'X-PreferServerAffinity': true 
       }, 
       additionalNamespaces : [ 
        'xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"', 
        'xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"', 
       ], 
       soapHeader : soapHeader, 
       method : 'POST', 
       url : ‘https://outlook.office365.com/EWS/Exchange.asmx', 
      }, function(error, res, body) { 
       // Process the response 
      }) 

Lorsque cette exécute la demande est formée et envoyée. Quand je regarde la demande brute envoyée, je confirme que les en-têtes sont en place.

headers: 
{ Authorization: 'Basic c29m…’, (shortened just in case) 
'X-AnchorMailbox': ‘[email protected]', (fake mail) 
'X-PreferServerAffinity': true, 
'Content-Length': 971, 
'Content-Type': 'text/xml; charset=utf-8', 
host: 'outlook.office365.com' } 

Ensuite, je reçois la réponse suivante d'Office.

Le corps de la réponse: (Ids raccourcies, au cas où)

<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><h:ServerVersionInfo MajorVersion="15" MinorVersion="1" MajorBuildNumber="693" MinorBuildNumber="12" Version="V2016_10_10" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/></s:Header><s:Body><m:SubscribeResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"><m:ResponseMessages><m:SubscribeResponseMessage ResponseClass=“Success”><m:ResponseCode>NoError</m:ResponseCode><m:SubscriptionId>KQB2aTFwcjA…wucsA==</m:SubscriptionId><m:Watermark>AQAAAFQ+2wmbaZF…JAAAAAAA=</m:Watermark></m:SubscribeResponseMessage></m:ResponseMessages></m:SubscribeResponse></s:Body></s:Envelope> 

Les en-têtes de la réponse sont: (Ids raccourcies, biscuits)

{ 'cache-control': 'private', 
'transfer-encoding': 'chunked', 
'content-type': 'text/xml; charset=utf-8', 
server: 'Microsoft-IIS/8.5', 
'request-id': ‘2881ab3…1ec461’, 
'x-calculatedbetarget': 'VI1PR0501MB2096.eurprd05.prod.outlook.com', 
'x-backendhttpstatus': '200', 
'set-cookie': [ ‘exchangecookie=d8f8…1e8; expires=Sat, 28-Oct-2017 08:41:27 GMT; path=/; HttpOnly' ], 
'x-ewshandler': 'Subscribe', 
'x-aspnet-version': '4.0.30319', 
'x-diaginfo': 'VI1PR0501MB2096', 
'x-beserver': 'VI1PR0501MB2096', 
'x-powered-by': 'ASP.NET', 
'x-feserver': 'VI1PR0901CA0093', 
date: 'Fri, 28 Oct 2016 08:41:26 GMT' } 

Comme vous pouvez le voir, je seulement obtenir le cookie d'échange, et pas de X-BackendOverrideCookie. Des idées sur ce qui se passe? Est-ce que je fais quelque chose de mal?

Edit 2:

J'ai aussi essayé cela avec EWSEditor. Définir les deux en-têtes, et fait une demande d'abonnement pull. J'ai le même résultat qu'ici.

Edit 3:

Voici le plein request

+0

Cela fonctionne correctement pour moi et d'autres personnes donc il est très probable qu'il s'agit d'un problème avec votre code, vous aurez donc besoin de poster ce que vous utilisez. –

+0

J'utilise ews-javascript-api qui est un port JS de l'API gérée. Mais maintenant, j'ai même essayé d'envoyer une requête ews brute, ajouté les en-têtes, et la réponse du bureau ne contient que l'exchangecookie, pas de cookie de remplacement backend. C'est aussi simple que ça, je ne vois pas ce que je pourrais faire de mal. Existe-t-il des paramètres Office pour définir ce cookie de remplacement de backend? – eomeroff

+0

Non, je vous suggère de poster la demande brute de votre utilisation (y compris les en-têtes), il est difficile pour quiconque de vous dire ce que vous faites incorrectement si vous ne montrez pas comment vous le faites. –

Répondre

0

Votre question ne comprend pas les en-têtes SOAP, mais si vous rencontrez les mêmes problèmes que je, la question est la RequestServerVersion dans ces en-têtes.

Plus précisément, vous aurez envie d'inclure quelque chose comme:

<soap:Header> 
    <t:RequestServerVersion Version="Exchange2013_SP1"/> 
</soap:Header> 

L'important est la Exchange2013_SP1. Sans _SP1, Office365 n'inclut pas le cookie 'X-BackendOverrideCookie' dans la réponse.