chrome拡張機能を作成し、popup.jsからCookieを読み取るPHPスクリプト(Xhttprequestを使用))を呼び出しました。このように:
$cookie_name = "mycookie";
if(isset($_COOKIE[$cookie_name]))
{
echo $_COOKIE[$cookie_name];
}
else{
echo "nocookie";
}
しかし、私は拡張機能のエラーでこの警告を受けています。
(Here is my domain)のクロスサイトリソースに関連付けられたCookieが、
SameSite
属性なしで設定されました。 Chromeの将来のリリースでは、SameSite=None
およびSecure
が設定されている場合にのみ、クロスサイトリクエストでCookieを配信します。Cookieは、アプリケーションの下の開発者ツールで確認できます> Storage> Cookies https://www.chromestatus.com/feature/5088147346030592 および https://www.chromestatus.com/feature/5633521622188032 で詳細を確認してください。
このようなCookieを作成しようとしましたが、役に立ちませんでした。
setcookie($cookie_name,$cookie_value, time() + 3600*24, "/;samesite=None ","mydomain.com", 1);
this 質問の指示に従います。
私もそのため「試行錯誤中」ですが、Googleからのこの回答Chrome LabsのGithubが少し役に立ちました。メインファイルに定義すると、うまくいきました。サードパーティドメイン1つのみ。テストはまだ行っていますが、この回答をより良い解決策に更新したいと思っています。
あなたがPHPを7.2まで持っているなら、私のサーバーがするように:
header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');
または、ホストがすでに7.3に更新されている場合は、以下を使用できます。
setcookie('cross-site-cookie', 'name', ['samesite' => 'None', 'secure' => true]);
Cookieを確認するもう1つの方法は、以下のフラグを有効にすることです。これにより、「この変更の影響を受ける可能性のあるすべてのCookieごとにコンソール警告メッセージが追加されます」。
chrome://flags/#cookie-deprecation-messages
https://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md にあるコード全体を参照してください。これらにはsame-site-cookies
も。
新機能が登場すると、SameSite=None
CookieもSecure
としてマークする必要があります。そうしないと拒否されます。
chromium updates とこの blog post の変更に関する詳細情報を見つけることができます。
注:質問とは直接関連していませんが、私のウェブサイトの開発中に最初は私の懸念であったため、ここに上陸した他の人には役立つかもしれません:
いくつかのサードパーティサイト(私の場合はgoogle.comでした)をリストする質問からの警告が表示されている場合-つまり、それらがそれを修正し、それはあなたのサイトとは何の関係もありません。もちろん、警告があなたのサイトに言及していない限り、Secure
を追加することで修正できます。
>= PHP 7.3
setcookie('key', 'value', ['SameSite' => 'None', 'Secure' => true]);
< PHP 7.3
exploit the path
setcookie('key', 'value', time()+(7*24*3600), "/; SameSite=None; Secure");
Emitting javascript
echo "<script>document.cookie('key=value; SameSite=None; Secure');</script>";
私は結局、Ubuntu 18.04/Apache 2.4.29/PHP 7.2 install Chrome 80 for mod_headersをインストールして、
a2enmod headers
Apache VirtualHost構成に次のディレクティブを追加します。
Header edit Set-Cookie ^(.*)$ "$1; Secure; SameSite=None"
そして、Apacheを再起動します。
service Apache2 restart
ドキュメントを確認したところ( http://www.balkangreenfoundation.org/manual/en/mod/mod_headers.html )「always」条件には、同じ条件では機能しない特定の状況があることに気付きました応答ヘッダーのプール。したがって、「常に」を使用しないことは私にとってPHPで機能しましたが、すべてのベースをカバーしたい場合は、「常に」を使用する場合と使用しない場合の両方でディレクティブを追加できます。テストされていません。