ホームページ > ウェブフロントエンド > jsチュートリアル > jqueryのクロスドメインアクセス問題の解決策(メモ)_jquery

jqueryのクロスドメインアクセス問題の解決策(メモ)_jquery

WBOY
リリース: 2016-05-16 18:06:04
オリジナル
1017 人が閲覧しました

過去 2 日間で、Web サイトの静的ページへの第 3 レベル ドメイン名の直接 URL 書き換え (http://123.456.789.com/ から http://www.789 への UrlRewrite など) を実装する必要がありました。 .com/news/123.html

そういえば、js のクロスドメインアクセスとは関係ないかもしれませんが、思い浮かぶ疑問はすべて UrlRewrite に関連しています。これで、URLRewrite の準備が整いました。ブラウザのアドレス バーに http://123.456.789.com/ と入力すると、これが http://www.789.com/news/123.html から直接送信されることがわかります。アクセスしたページで問題が発生し、Web ページ上の画像、スタイル、JS が機能を失ったようです。

2 つのアドレス バーの URL を見て、突然頭をたたいてアイデアを思いつきました。このページのソースコードは、画像、CSS、JS を相対パスでリクエストしていることがわかりました。もちろん、 http://www.789.com/news/123.html のパスに直接アクセスする場合は問題ありませんが、 http://123.456.789.com/ を使用してアクセスする場合は、この 2 つを見てください。たとえば、1 の image/1.gif は http://www.789.com/news/1.gif をリクエストするのと同じですが、2 ではそれと同じです。 http://123.456.789 になります。 .com/images/1.gif 明らかに、この画像をリクエストすることはできません。この道の下ではこの写真は決して見つからないからです。さて、簡単にするために、インターネット上で他の人が紹介した多くの方法を使用せず、絶対パスを使用して解決します。わかりました。すべてがとても自然でスムーズに見えます。しかし、本当の問題はまだこれからだ。

ここまでのところ、タイトルと一致していないようです。心配しないでください。1 つの問題は、次の問題が発生する前に必ず解決されます。

まず、私のページについて説明します。このページはプログラムによって静的に作成されていますが、静的なページに表示される情報は IFRAME を使用することで解決できると考えている人も多いでしょう。しかし、この解決策は私が使いたいものではありません。1. IFRAME は他の方法よりも効率が低く、2. IFRAME は這うクモに適していません。そこで、ここではまず JQUERY のロード関数を使用して動的ページを直接リクエストし、返された動的情報を静的ページに表示しました。さて、この時点で、この日記が「jquery クロスドメイン アクセス問題」と呼ばれている理由をすでに知っている友人もいるかもしれません。

まず、jquery ロード関数のパラメーターを確認します $("#head").load("http://www.cnblogs.com/project/ajax.php"{"Action":"head "}); もちろん、上記のレッスンを通じて、パラメーターは $("#head").load("http://www.789.com/project/ajax.php"{"Action":) に変更されています。 "head" }); ただし、「jquery.js 138 行目へのアクセスは許可されていません」というメッセージが表示されたため、juqery 138 行目を確認しました。ロード関数に問題があることがわかりました。正直に言うと、圧縮された JS コードの束は人々を死にたくさせます。) さて、インターネットで Google にアクセスしたところ、何人かの人の回答が目に留まりました。彼らは皆、これは JS のクロスドメイン操作に問題があると言っています。 JS 自体はドメインを越えて直接動作することはできません。次に、独自の第 3 レベル ドメイン名 URLRewrite に連絡し、クロスドメインの問題について考えます。第 3 レベル ドメイン名の下にあるドメインは 123 の下、456 の下、789 です。リクエストは 789.com ドメイン名の下にあります。クロスドメインではない場合はどうなりますか?突然光が見えます。確かに問題は見つかりました。

Google で検索を続けてください。多くの人が jquery getJson をコールバック関数を使用して解決することを推奨しています。笑、http://blog.ossxp.com/ を引き続き検索してください。 2010/02/462/ この記事は非常に優れており、私は今でも自分のプロジェクトでその例に従っています。問題は解決しました!

HTML ページの jquery コード

コードをコピー コードは次のとおりです:

$.getJSON("http://www.789.com/project/ajax.php?Action=head&callback=?",
function(data){ // パラメータ 1 はバックグラウンドに渡されます;
var html = decodeURI (data.str)
$('#head').html(html); //コンテンツの表示に使用される div を呼び出します
});サイド PHP コード


コードをコピー コードは次のとおりです。 $str = "< ul>
これはテストです
";
$arr['str'] = $str;
$json = json_encode($arr); // Json_encode 関数を使用しますphp 配列を処理する
echo $_GET['callback']."(".$json.")";


を介したサーバーの動的クラス コンテンツへのクロスドメイン アクセスの問題静的ページへの第 3 レベル ドメイン名の URLREWRITE は正常に解決されました。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート