AjaxクロスドメインアクセスにおけるCookie消失問題の解決策_AJAX関連
この ajax クロスドメイン アクセスは、jsonp メソッドまたは Access-Control-Allow-Origin の設定を使用して実現できます。クロスドメイン アクセスを実現するための Access-Control-Allow-Origin の設定については、以前に書いた記事を参照してください。 ajax の設定 Access-Control-Allow「-Origin によるクロスドメイン アクセスの実現」の記事では、Ajax のクロスドメイン アクセスにおける Cookie 損失の問題の解決策を主に紹介しています。お困りの皆様の参考になれば幸いです。
1.ajax クロスドメイン アクセス、Cookie の損失
まず、2 つのテスト ドメイン名を作成します
a.fdipzone.com をクライアント ドメイン名として
b.fdipzone.com をサーバー ドメイン名として
テスト コード
setcookie.PHP サーバーのクッキーの設定に使用します
<?php setcookie('data', time(), time()+3600); ?>
server.php クライアントからのリクエストに使用します
<?php $name = isset($_POST['name'])? $_POST['name'] : ''; $ret = array( 'success' => true, 'name' => $name, 'cookie' => isset($_COOKIE['data'])? $_COOKIE['data'] : '' ); // 指定允许其他域名访问 header('Access-Control-Allow-Origin:http://a.fdipzone.com'); // 响应类型 header('Access-Control-Allow-Methods:POST'); // 响应头设置 header('Access-Control-Allow-Headers:x-requested-with,content-type'); header('content-type:application/json'); echo json_encode($ret); ?>
test.html クライアントリクエストページ
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> <title> ajax 跨域访问cookie丢失的解决方法 </title> </head> <body> <script type="text/javascript"> $(function(){ $.ajax({ url: 'http://b.fdipzone.com/server.php', // 跨域 dataType: 'json', type: 'post', data: {'name':'fdipzone'}, success:function(ret){ if(ret['success']==true){ alert('cookie:' + ret['cookie']); } } }); }) </script> </body> </html>
まず http://b.fdipzone.com/setcookie.php を実行して作成しますサービス終了クッキー。
次に http://a.fdipzone.com/test.html を実行します
出力
{"success":true,"name":"fdipzone","cookie":""}
は Cookie の取得に失敗しました。
2. 解決策
クライアント
リクエスト時に withCredentials 属性を true に設定して、特定のリクエストが認証情報を送信するように指定できるようにします。サーバーが認証情報付きのリクエストを受信すると、次の HTTP ヘッダーで応答します。
サーバー
ヘッダーを設定します
header("Access-Control-Allow-Credentials:true");
検証情報を含むリクエストを許可します
test.html次のように変更します
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script src="//code.jquery.com/jquery-1.11.0.min.js"></script> <title> ajax 跨域访问cookie丢失的解决方法 </title> </head> <body> <script type="text/javascript"> $(function(){ $.ajax({ url: 'http://b.fdipzone.com/server.php', // 跨域 xhrFields:{withCredentials: true}, // 发送凭据 dataType: 'json', type: 'post', data: {'name':'fdipzone'}, success:function(ret){ if(ret['success']==true){ alert('cookie:' + ret['cookie']); } } }); }) </script> </body> </html>
server.php次のように変更します
<?php $name = isset($_POST['name'])? $_POST['name'] : ''; $ret = array( 'success' => true, 'name' => $name, 'cookie' => isset($_COOKIE['data'])? $_COOKIE['data'] : '' ); // 指定允许其他域名访问 header('Access-Control-Allow-Origin:http://a.fdipzone.com'); // 响应类型 header('Access-Control-Allow-Methods:POST'); // 响应头设置 header('Access-Control-Allow-Headers:x-requested-with,content-type'); // 是否允许请求带有验证信息 header('Access-Control-Allow-Credentials:true'); header('content-type:application/json'); echo json_encode($ret); ?>
前の手順に従うと、リクエストは返されます
{"success":true,"name":"fdipzone","cookie":"1484558863"}
Cookieを取得します成功しました
3. 注意事項1. クライアントが withCredentials 属性を true に設定しても、サーバーが Access-Control-Allow-Credentials:true を設定しない場合、リクエスト中にエラーが返されます。XMLHttpRequest cannot load http://b.fdipzone.com/server.php. Credentials flag is 'true', but the 'Access-Control-Allow-Credentials' header is ''. It must be 'true' to allow credentials. Origin 'http://a.fdipzone.com' is therefore not allowed access.
XMLHttpRequest cannot load http://b.fdipzone.com/server.php. A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' heade
var xhr = new XMLHttpRequest(); xhr.open("POST", "http://xxxx.com/demo/b/index.php", true); xhr.withCredentials = true; //支持跨域发送cookies xhr.send();
$.ajax({ type: "POST", url: "http://xxx.com/api/test", dataType: 'jsonp', xhrFields: { withCredentials: true }, crossDomain: true, success:function(){ }, error:function(){ } })
header("Access-Control-Allow-Credentials: true"); header("Access-Control-Allow-Origin: http://www.xxx.com");
JS は Ajax クロスドメイン リクエストのフラスコ応答コンテンツを実装します
Ajax クロスドメイン リクエスト COOKIE は完璧な解決策をもたらすことはできません
Ajax クロスドメイン リクエストの原理を詳細に説明するサンプル
以上がAjaxクロスドメインアクセスにおけるCookie消失問題の解決策_AJAX関連の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









タイトル: jQuery AJAX リクエストの 403 エラーを解決する方法とコード例。403 エラーは、サーバーがリソースへのアクセスを禁止するリクエストを指します。このエラーは通常、リクエストにアクセス許可がないか、サーバーによって拒否されたために発生します。 jQueryAJAX リクエストを行うときにこのような状況に遭遇することがありますが、この記事ではこの問題の解決方法とコード例を紹介します。解決策: 権限を確認します。まず、要求された URL アドレスが正しいことを確認し、リソースにアクセスするための十分な権限があることを確認します。

jQuery は、クライアント側の開発を簡素化するために使用される人気のある JavaScript ライブラリです。 AJAX は、Web ページ全体をリロードせずに、非同期リクエストを送信し、サーバーと対話するテクノロジーです。ただし、jQuery を使用して AJAX リクエストを行うと、403 エラーが発生することがあります。 403 エラーは通常、セキュリティ ポリシーまたは権限の問題が原因で、サーバーによってアクセスが拒否されたエラーです。この記事では、jQueryAJAX リクエストで 403 エラーが発生した場合の解決方法について説明します。

ますます多くのユーザーが win11 システムにアップグレードし始めています。各ユーザーの使用習慣が異なるため、多くのユーザーは依然として ie11 ブラウザーを使用しています。では、win11 システムで ie ブラウザーを使用できない場合はどうすればよいでしょうか? Windows11はIE11をまだサポートしていますか?解決策を見てみましょう。 win11でie11ブラウザが使えない問題の解決策 1. まず、スタートメニューを右クリックし、「コマンドプロンプト(管理者)」を選択して開きます。 2. 開いたら、「Netshwinsockreset」と直接入力し、Enter キーを押して確定します。 3. 確認後、「netshadvfirewallreset&rdqu」と入力します。

インターネットの普及により、ブラウザを使用してインターネットを閲覧することが生活様式になりました。ブラウザを日常的に使用する中で、オンラインショッピング、ソーシャルネットワーキング、電子メールなど、アカウントのパスワードを入力する必要がある場面に遭遇することがよくあります。この情報は、次回アクセスするときに再度入力する必要がないようにブラウザによって記録される必要がありますが、このような場合に Cookie が役に立ちます。クッキーとは何ですか? Cookie とは、サーバーからユーザーのブラウザに送信され、ローカルに保存される小さなデータ ファイルを指し、一部の Web サイトでのユーザーの行動が含まれています。

Ajax を使用して PHP メソッドから変数を取得することは、Web 開発では一般的なシナリオであり、Ajax を使用すると、データを更新せずにページを動的に取得できます。この記事では、Ajax を使用して PHP メソッドから変数を取得する方法と、具体的なコード例を紹介します。まず、Ajax リクエストを処理し、必要な変数を返すための PHP ファイルを作成する必要があります。以下は、単純な PHP ファイル getData.php のサンプル コードです。

jQueryAJAX エラー 403 の問題を解決するにはどうすればよいですか? Web アプリケーションを開発する場合、非同期リクエストを送信するために jQuery がよく使用されます。ただし、jQueryAJAX の使用時に、サーバーによってアクセスが禁止されていることを示すエラー コード 403 が発生する場合があります。これは通常、サーバー側のセキュリティ設定が原因ですが、回避する方法があります。この記事では、jQueryAJAX エラー 403 の問題を解決する方法と具体的なコード例を紹介します。 1.作る

PHP と Ajax を使用してオートコンプリート候補エンジンを構築します。 サーバー側スクリプト: Ajax リクエストを処理し、候補を返します (autocomplete.php)。クライアント スクリプト: Ajax リクエストを送信し、提案を表示します (autocomplete.js)。実際のケース: HTML ページにスクリプトを組み込み、検索入力要素の識別子を指定します。

Cookie 設定に関する一般的な問題と解決策、具体的なコード例が必要です インターネットの発展に伴い、Cookie は最も一般的な従来技術の 1 つとして、Web サイトやアプリケーションで広く使用されています。簡単に言うと、Cookie はユーザーのコンピュータに保存されるデータ ファイルで、ログイン名、ショッピング カートの内容、Web サイトの設定などを含むユーザーの情報を Web サイトに保存するために使用できます。 Cookie は開発者にとって不可欠なツールですが、同時に Cookie の設定が頻繁に必要になります。
