検索
ホームページバックエンド開発PHPチュートリアルPHP 如何操作跨域的COOKIE,不同服务器上

首先是两个不同子域的域名,解析在不同服务器上的,当然目录也不同的。我在进行跨域操作(删除COOKIE)时,失败。无法操作。
我尝试过P3P协议,还是不行,这有办法实现吗?

回复内容:

首先是两个不同子域的域名,解析在不同服务器上的,当然目录也不同的。我在进行跨域操作(删除COOKIE)时,失败。无法操作。
我尝试过P3P协议,还是不行,这有办法实现吗?

cookies 定义在 RFC2109 标准。cookies 的大部分操作,由客户端也就是浏览器实现。

cookies 每一个 cookie 代表着一个 key-value 键值对,以及作用范围,和生命周期。

cookie 字段定义

作用范围(Scope): path, domain

生命周期(Life cycle):也就是cookie的过期时间,expires (GMT,UTC) 时间标准

安全作用域(Security Scope):HttpOnly, Secure

跨域访问涉及 作用范围(Scope), 安全作用域(Security Scope)

如果 你不使用 js 操作 Cookie 的话,可以忽略 安全作用域(Security Scope)。

以上可能有点 抽象,但是你可以打开 chrome 按 F12 -> Resources -> Cookies

可以看到,类似下面这样

PHP 如何操作跨域的COOKIE,不同服务器上

以上都是感念跟废话。重要看下面。

服务端只是 cookie 的接收者和解析者。由浏览器也就是客户端决定是否要将哪些 cookies 发送到到服务端。

而客户端是参考标准实现 RFC2109 的话(基本都是这样)。是根据 cookie 的 path, 和 domain 来发送。

我们假设,我们现在有两个 domain.

  • oauth2.php123.com
  • www.php123.com

如果想让 客户端将 www.php123.com 下面的 cookie 也发送到 oauth2.php123.com 下面。那么你需要,在 setcookie() 的时候,将 domain 设置成为 php123.com

<code>php 库函数 setcookie 的定义
bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )
</code>

来个实在点的例子吧。

<code>php</code><code>// oauth.php123.com/cookie.php
<?php setcookie("foo1", "bar1", time() + 3600, "/", "php123.com")
    setcookie("foo2", "bar1", time() + 3600) //domain 默认使用,当前domain。
    setcookie("foo3", "bar3", time() + 3600, "/", "www.php123.com")
</code></code>
<code>php</code><code>// www.php123.com/cookie.php
<?php print_r($_COOKIE)

// output  array( 'foo1' => 'bar1', 'foo3'=> 'bar3' )

// 没有拿到 ['foo2' => 'bar2'],那是因为客户端只需将 domain 为`php123.com`,`www.php123.com`的 cookie 发送到 www.php123.com 这个域上。所以 cookie.php 只拿到了该拿到的两个 cookie。
</code>

以上代码可以很好的解释 cookie 的工作方式。理解好 cookie 的工作及机制可以实现很多高级功能。比如分布式的 session 共享。

反之亦然,自己去领悟吧。

1、楼上给出了子域名下的解决方案。很简单,在每次调用时,指定cookie的域为子域名。完全可以采用此方案。
http://stackoverflow.com/questions/22029530/sessions-cookies-shared-on-subdomains/22030121#22030121

2、P3P协议。是解决cookie跨域时的方案。a站生成cookie,b站删除a站cookie。
b站加js跨域:

<code><?php echo '<script src="http//www.a.com/delete-site-a-cookie.php?cookie_name=test">';
</code>

a站接收参数,执行删除

<code><?php //filter_cookie_name();
setcookie($cookie_name, '', time()-3600, '/');
</code></code>

但是,ie下会失效。。。原因么事浏览器安全策略的问题了,所以就得用到p3p.在删除前,加上协议:

<code><?php header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');

//filter_cookie_name();
setcookie();
</code></code>

现在,你再看看。。

跨域跟PHP 没关系,cookie是通过请求头传递的,PHP 收到了请求必然能得到cookie

如果是www.a.com,和www.b.com, 是没有办法实现跨域操作的, 可以用变通的方法,比如jsonp等来解决。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?Apr 10, 2025 am 09:39 AM

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?Apr 10, 2025 am 09:38 AM

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。Apr 10, 2025 am 09:37 AM

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、ファイルを安全に処理する方法をどのように処理しますか?PHPは、ファイルを安全に処理する方法をどのように処理しますか?Apr 10, 2025 am 09:37 AM

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Apr 10, 2025 am 09:33 AM

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境