質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP

ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

Q&A

解決済

1回答

4525閲覧

Ajaxで呼び出したASPファイルでクッキーを設定したい

kkdk

総合スコア1

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

ASP

ASP(Active Server Pages) あるいはClassic ASP (ASP Classic)は、マイクロソフト社開発した動的なウェブページ製作に利用可能なサーバー側のスプリクトエンジンです。

0グッド

1クリップ

投稿2020/09/08 09:32

編集2020/09/08 11:41

問題

外部ドメインのaspファイルにAjax通信を行い、そこでクッキーの設定を行おうとしています。
aspファイルはエラーなく読み込むことができ、
Chromeのデベロッパーツールで確認したところSet-cookieも設定できています。
しかし実際にクッキーは保存されていない状態で、原因がわからず困っています。
何か設定が足りない、などあればご助言いただきたいです。

Ajax送信

Jquery

1// https://exsample_a.comのファイル 2$.ajax({ 3 url: 'https://exsample_b.com/set_cookie.asp?testid=123456' 4 ,xhrFields: { withCredentials : true } 5 ,type :'GET' 6 ,success :function(){ 7 //成功時の処理 8 } 9});

asp側の設定

Vbscript

1// https://exsample_b.comのファイル 2 Call Response.Addheader("Access-Control-Allow-Origin", "https://exsample_a.com") 3 Call Response.Addheader("Access-Control-Allow-Credentials", "true") 4 Call Response.Addheader("Access-Control-Allow-Headers","Origin,Authorization,Accept,X-Requested-With") 5 6Dim TestId 7TestId = Request.QueryString("testid") 8 Call Response.AddHeader "Set-Cookie", "testcookie=TestID=" & TestId & "; Secure; SameSite=none"

set_cookie.aspをブラウザから直接開いた場合は正常にクッキーが保存できます。
ajaxで呼び出した場合にクッキーの書き込みができないようです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ockeghem

2020/09/08 10:11

『Chromeのデベロッパーツールで確認したところSet-cookieも設定できています。しかし実際にクッキーは保存されていない状態で』ということですが、レスポンスヘッダにはSet-Cookieヘッダはあるが、デベロッパーツールのApplicatinタブからStorage-Cookiesで確認すると保存されていない、という意味でしょうか。
ockeghem

2020/09/08 10:20

Chrome以外のIEやFirefoxだとどうなりますか?
kkdk

2020/09/08 10:40

>レスポンスヘッダにはSet-Cookieヘッダはあるが、デベロッパーツールのApplicatinタブからStorage-Cookiesで確認すると保存されていない、という意味でしょうか。 まさしくその通りです。 IEとFireFoxの場合はヘッダーだけでなくストレージの方にもクッキーが保存されていることが確認できました。
guest

回答1

0

ベストアンサー

これはGoogle Chromeの仕様変更により、クッキーのデフォルトのSameSite属性がLaxという扱いになったことによるものだと思います。ASP側でクッキー設定時に以下のようにすれば設定されます。

Set-Cookie: Foo=Bar; secure; samesite=none;

secureとsamesite=noneの両方が必要です。もともとHTTPSのサイトのようですので、secure属性はつけられるはずです。
簡易的に確認するなら、以下を追加して試してみたらどうでしょうか?

VBScript

1Call Response.Addheader("Set-Cookie: Foo=Bar; secure; samesite=none;")

(追記)

クッキーがセットできない場合とできる場合のテベロッパーツールのキャプチャを紹介します。デベロッパーツールのNetworkタブから当該のHTTPメッセージを選択して、右側のペインでCookiesを選択します。
まずはエラーになるケース。

イメージ説明

右下のSameSite欄に ! の表示があり、その下にエラーメッセージが表示されています。
続いて、正常にセットできる場合。

イメージ説明

エラーなくクッキーがセットされています。
質問者さんの環境ではどうなりますか?


(追記)

Google Chromeの 設定 | プライバシーとセキュリティ | Cookie と他のサイトデータ と選択して、画面を確認してください。「サードパーティの Cookie をブロックする」や「すべての Cookie をブロックする(推奨されません)」だとエラーになります。

イメージ説明

投稿2020/09/08 11:06

編集2020/09/08 12:50
ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kkdk

2020/09/08 11:47 編集

申し訳ありません。 質問の本文にてSet cookieを行っている個所にCallをつけ忘れていました。 (実際に動かしているPGではついています。) 元のPGでもSet-Cookieの処理で Secure; SameSite=noneは末尾に付けていましたが、クッキーは保存されませんでした。 いただいた回答をもとに >Call Response.Addheader("Set-Cookie","Foo=Bar; secure; samesite=none;") こちらを追加してみましたが、同様の結果となりました。
kkdk

2020/09/08 12:20 編集

追加への返答 ご丁寧にありがとうございます。 Networkタブ>Cookiesにて確認しましたところ、SameSiteはNoneとなっていたもののクッキーは黄色く表示されており、左端にビックリマークが出ていました。 マウスオーバーで内容を確認すると 「This Set-Cookie was blocked due to user preferences」 と表示されます。 とくに設定を変更した覚えはないのですが、これはPG側での設定の問題ということでしょうか。 もしくはブラウザ設定がおかしい、ということでしょうか。
kkdk

2020/09/08 12:59

設定を見直したところサードパーティークッキーを受け入れない状態となっていました。 変更後cookieが保存されるようになったことを確認できました。 お手数お掛け致しました。 大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問