RSS

javascript AJAXクロスドメインPOSTリモートアクセスの単純な実装の問題

発売日:2022/11/12 11:06

実際、問題は非常に単純です. リクエストを POST することができ、サーバーもレスポンスを返します. これは、ローカルの JavaScript がレスポンスを処理するのを防ぐ最新のブラウザのセキュリティ メカニズムです.デバッグ コンソールには次のように表示されます。

オリジン「null」から「https://ip.taotu.org/」の XMLHttpRequest へのアクセスが CORS ポリシーによってブロックされました: 要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。

問題は、ローカル ページを投稿すると、ブラウザーが自動的にヘッダー Origin: null を追加し、サーバーが応答ヘッダー Access-Control-Allow-Origin: * を追加しない場合、応答を返すとき、またはヘッダーサーバーから返される値はあなたのものと同じです 送信されたヘッダーの Origin が一致しない場合、ブラウザ クライアントは処理のために応答データを JavaScript に渡さず、エラーが発生します。

解決策: 実際には、非常に単純なサーバー バックエンド コードです。投稿データに指定された情報 (自分のパスワードに相当) が含まれているかどうかを確認するだけで済みます。含まれている場合は、Access-Control-Allow-Origin を追加します。 *、クライアントを正しく処理できるようにします。

要約すると、AJAX クロスドメイン リクエストはデフォルトで許可されておらず、ブラウザが禁止するため、サーバーは状況が必要かどうかを判断し、Access-Control-Allow-Origin:* レスポンス ヘッダーを返し、OK です。

リクエストページの JavaScript コード:

var xhttp = 新しい XMLHttpRequest();

xhttp.onreadystatechange = 関数 () {

if (this.readyState == 4 && this.status == 200) {

document.getElementById("queryipinfo").innerHTML =

this.responseText;

}

};

xhttp.open("POST", "https://ip.taotu.org", true);

xhttp.send('XX comes from remote request XX'+ipdomain); //キーコードによって追加された前の文字列は、私たち自身のパスワードに相当します

サーバー側の処理コード:

ストリーム oPostData = Request.InputStream;

バイト[] bPostByte=新しいバイト[oPostData.Length];

oPostData.Read(bPostByte, 0, (int)oPostData.Length);

文字列 sPostIPDomain=Encoding.UTF8.GetString(bPostByte);

bool bFromRemote;

if (sPostIPDomain.StartsWith("XX はリモート リクエスト XX から来ています")) //キー コード

{

bFromRemote=真;

sPostIPDomain = Regex.Replace(sPostIPDomain,"XX はリモート要求 XX(.*) から来ています", "$1");

********省略コード********

if (bFromRemote) //ヘッダーを返すかどうかを判断するキーコード

Response.AddHeader("Access-Control-Allow-Origin", "*"); //キーコード

ちなみに、通常の解決策は、サーバーの応答ヘッダーに Access-Control-Allow-Origin: * を設定して、すべてのクロスドメイン リクエストを許可するか、Access-Control-Allow-Origin: https://taotu.org を許可することです。指定したドメインから送信されるリクエストは、通常のネットワーク開発で使用されますが、自宅でローカルに送信されるリクエスト ドメインが IP アドレスであることが要件であり、固定 IP ではない場合、これは長い間解決できないため、このシンプルなソリューションを使用しました。

私の目的は、自宅のローカル コンピューターのブラウザーに静的な .html ファイルを設定し、それを既定のホームページとして設定することです.ブラウザーを開くたびに、java を介してリモート サーバーにポスト リクエストを送信し、自分の.html ファイルを返します。外部ネットワーク IP を取得して表示します。静的ページには、頻繁に使用する Web サイトへのリンクや、スリーインワンの検索エンジンもあります。

これは私が作成した小さなウェブページです。訪問するか、ホームページとして設定してください: https://ip.taotu.org

javascript AJAXクロスドメインPOSTリモートアクセスの単純な実装の問題

ユーザーコメント

新しいコメントを追加

検証コード

188BET-アジア最高のスポーツベッティングプラットフォーム