miso_soup3 Blog

主に ASP.NET 関連について書いています。

クロスドメインで Cookie を送信するときに気を付けること

Microsoft Azure を利用するときは注意。

  • azurewebsites.net
  • azure-mobile.net
  • cloudapp.net

これら宛てにクロスドメインとして Cookie を送信する場合、Chrome とかは送信しないようにしているので注意。

気を付けることメモ

Cookie を送信したい場合は、以下のように設定する。(ASP.NET web.config にて)

<system.webServer>
  <httpProtocol xdt:Transform="Insert">
    <customHeaders>
      <clear />
        <add name="Access-Control-Allow-Credentials" value="true" />
        ...

呼び出す側(クライアント側)で、Credential = true で送信する。
例えば jQuery の場合は以下のように。

$.ajax({
    url: 'api/hoge/...',
    type: 'get',
    xhrFields: {
        withCredentials: true
    },
  • 呼び出される側が Access-Control-Allow-Origin ヘッダを返していること
    • Credentials を使う場合は、「*」ではない値を指定する。(ASP.NET web.config にて)
<system.webServer>
  <httpProtocol xdt:Transform="Insert">
    <customHeaders>
      <clear />
        ...
        <add name="Access-Control-Allow-Origin" value="http://hogehogehoge"/>
        ...
  • Cookie の送信先のドメインが、Public Suffix List https://publicsuffix.org/ に含まれていないこと
    • 上記のサイトから「THE LIST」> See the list で確認可能。
    • Microsoft Azure の 以下のサービスは載っているので注意
      • azurewebsites.net
      • azure-mobile.net
      • cloudapp.net

ちなみに IE11 は Cookie を送信していた。