2

ユースケース: ajax アップロード機能を使用した画像アップローダーを使用しています。ユーザーが Web サイトで作成したサブドメインに画像をアップロードしたいです。たとえば、ユーザーが Web サイトでドメインを作成するときに、画像をアップロードするための php スクリプトをコピーします。ユーザーが自分のドメインimage-cropping.phpに画像をアップロードするときに、このファイルにリクエストを送信したいと思います。

問題:
画像をアップロードしようとすると、Error: Permission denied to access property 'readyState'.My Calling js file is on xyz.google.comand the upload php script is on というメッセージが表示されabc.google.comます。

調査
いくつかのグーグル検索と調査を行った後、javascript ではクロス ドメインへのリクエストの送信が許可されず、これを処理するには http プロキシが必要であることがわかりました。私が試したコードは次のとおりです。他のドメインのファイルへのパス (パスは動的に構築されます)。

   new AjaxUpload(btnUpload, {
        action: 'includes/modules/domain_creation/proxy.php',
        name: 'image',
        onSubmit: function(file, ext){
            if (! (ext && /^(jpg|png|jpeg|gif|JPG|JPEG|PNG|GIF)$/.test(ext))){ 
                alert('Only JPG, PNG or GIF files are allowed');
                return false;
            }
            $('#thumbImg').html('<img src="http://localhost/gobiggi_VS_2_2/images/appImages/imageLoader.png" />');
        },

1)私は正しい方法でそれをやっていますか(初めてそれに取り組んでいます)?プロキシは実際に必要ですか? 2)エラーの許可をネゴシエートできるように、プロキシ
を設定する方法と場所を教えてください。3)どのようなセキュリティ問題が発生しますか(安全ですか?そうでない場合、代替手段はありますか)?ポインタや提案は私にとって役に立ちます。お時間をいただきありがとうございます。

更新:画像のアップロードに
このプロキシスクリプトを使用しています。コードの一部は

   $domainUsername = $_SESSION['domainUsername'];
   $domainNameWeb = $_SESSION['domainName'];
   //$fileParameterProxy = $_FILES['image'];
   //Destination URL: Where this proxy leads to the upload script
     $destinationURL = 'http://www.'.$domainNameWeb.'/'.$domainUsername.'/upload.php';
   //The only domain from which requests are authorized.
   $RequestDomain = 'abc.net';

今は取得できませんError for permissionが、画像をサーバーに取得できません。実行しようとするとprint_r($_FILES)、アップロード スクリプトに空の配列が表示されます。

私は何かが欠けていると思います!!誰かが修正してもらえますか?
お時間をいただきありがとうございます!

4

1 に答える 1

1

1および2)プロキシをアクションとして設定する必要があります。これは、ファイルをアップロードできる場所であるためです。次に、プロキシは他のドメインにリクエストを送信し、そこでファイルを送信できます。

3)プロキシの実装によって異なります。phpスクリプトを作成するときのように、ファイルをローカルに保存したり、ユーザー入力から何かを実行/インクルードしたりすることは避けてください。tmpファイルを宛先サーバーに直接送信します。これも最速の実装になります。

于 2013-02-12T14:30:31.027 に答える