ホームページ  >  記事  >  バックエンド開発  >  PHP バックエンドでクロスドメインのドメイン名を制御し、クロスドメインの画像アップロードを許可する方法の紹介

PHP バックエンドでクロスドメインのドメイン名を制御し、クロスドメインの画像アップロードを許可する方法の紹介

不言
不言転載
2018-11-12 13:52:513941ブラウズ

この記事では、クロスドメインのドメイン名を制御し、PHP バックエンドで画像のクロスドメインのアップロードを許可する方法を紹介します。これには一定の参考価値があります。必要な友人は参考にしてください。そうなることを願っています。あなたにとって役に立ちます。

クロスドメインの問題に対処する必要があることが多く、フロントエンドはより直接的に行う必要があります

Ajax 非同期送信、XML または jsonp、またはフォーム送信のいずれかを選択します

jsonp は基本的に大きな問題を処理できます いくつかのクロスドメインの問題もありますが、問題は比較的明らかでもあります。get メソッドを通じてのみ送信できます

##そして、jsonp は URL にパラメータを入れてリクエストを送信します

ただし、すべてのブラウザには URL の長さの制限があり、ブラウザごとに長さの制限が異なります。

#記事などの大きなコンテンツの段落を送信する必要がある場合、jsonp を使用する場合、長さの制限がある場合は、

非常に面倒で、最終的には正しくありません セキュリティに若干の影響が出ます

あと、axiox は現在 jsonp をサポートしていませんが、これを解決する方法はあります。

#特に画像リソースをアップロードする場合、jsonp などのメソッドを使用して適切に実装することはできません

クロスドメイン画像アップロードが必要なシナリオ

もちろん、クロスドメインにしないことが最善ですが、現在、ほとんどのプロジェクトではフロントエンドとバックエンドが分離されています

静的リソースとインターフェイスは異なるドメイン名または第 2 レベルのドメイン名ですそれぞれ、クロスドメインが関係します。

リソースのアップロードの場合、クロスドメインにはバックエンドの Access-Control-Allow-Origin と現在のリクエストが必要です。Origin と同様に、*# に設定することはできません。

##php ソリューション

#従来のデータ リクエストの場合、バックエンドは Access-Control-Allow-Origin を * Healthy

 header('Access-Control-Allow-Origin:*');
But に直接設定します。写真などのリソースをアップロードするオリジンは、Access-Control-Allow-Origin の値と同じである必要があります。

Access-Control-Allow-Origin が現在のオリジンと同じに設定されている場合、アップロードできるドメイン名は 1 つだけです。

他のドメイン名がこのインターフェイスを呼び出す必要がある場合、それらは禁止されます。

したがって、最善の方法はドメインのリストを制限することです。このインターフェイスを呼び出すことができる名前。つまり、セキュリティがある程度向上します。

この方法では、まず現在のリクエストの発信元を取得し、それがアクセスを許可されているドメイン名のリストに含まれているかどうかを確認します。

Access-Control-Allow-Origin の値を現在のリクエスト Origin に設定します

$originList = [
    'http://127.0.0.1',
    'http://www.php.cn',
    'http://www.php.cn',
];
if(in_array($_SERVER['HTTP_ORIGIN'], $originList)){
    header('Access-Control-Allow-Origin:'.$origin);
    header("Access-Control-Allow-Credentials: true");
    header('Access-Control-Allow-Headers:x-requested-with,content-type');
    header("Access-Control-Allow-Methods: POST,GET,OPTIONS");
}
このようにして、クロスドメインのドメイン名を制御でき、画像リソースを同じドメイン内と同じようにアップロードできます

投稿方法はクロスドメイン送信にも適用できます

以上がPHP バックエンドでクロスドメインのドメイン名を制御し、クロスドメインの画像アップロードを許可する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。