2

jquery の $.post 関数と、(私が思うに) クロスドメイン セキュリティに問題があります。

奇妙な部分は、投稿しようとしているページが、投稿を送信するページと同じディレクトリにあることです。

これは、投稿リクエストを作成するファイル「latest.php」の JavaScript コードです。

$.post("upload.php", { base64: fCanvas, description: description }, function(data){
             // some things happen here
        });

upload.php は、base64 変数の内容を Tumblr にアップロードする php スクリプトです。

JavaScript コンソールに 403 Forbidden エラーが表示されます。chmodding -777 'upload.php' を試しましたが、何も変わりませんでした。

$.post の代わりに $.get を使用することもできますが、セキュリティ上の理由と $get データの長さ制限 (base64 でエンコードされた画像を送信しています) のために望ましくありません。


編集:「latest.php」の $.get リクエストの 1 つを $.post に変更しましたが、動作しています...

$.post("base64.php", { url: t_url },
               function(data){
                 data = "data:image/gif;base64,"+data;
                 draw(data);
               });

だから、私は何がうまくいかないのか完全に無知です。

4

5 に答える 5

5

403 Forbiddenサーバーによって生成された応答であり、「Same Origin Policy」とは何の関係もありません。それ以上のヘルプを提供することはできませんが、クロスドメインの問題ではなく、構成に関連するものになります。


編集:実行権限がないことを示唆するつもりでしたが、すでに 777 chmod を実行しておりGET、それを でヒットすることができます。完全に役に立たないようにするために、 777 の代わりに 644を使用する必要があることを示唆するリンクを次に示します。


別の提案:あなた(または他の構成)でmod_security有効になっていますか? マークアップ/URL やその他の潜在的な試み.htaccessなどを含むフォーム値に対して友好的ではないことが知られています。XSS

于 2012-05-16T19:25:06.560 に答える
3

良い。私はそれを働かせました。

小さい (まだ base64 でエンコードされた) 画像を upload.php スクリプトに送信してみましたが、うまくいきました。jQuery の post 関数は、大量の (相対的な、640x453 の画像にすぎない) 量のデータを処理できないようです。

代わりに XMLHttpRequest() を使用して問題を解決しました。それは魅力のように機能します。

jQuery の Ajax に関する正確な問題を誰かが知っている場合は、私に知らせてください。私のデータがなぜ HTTP Forbidden エラーを引き起こしたのか、まだ正確にはわからないからです。

于 2012-05-18T13:41:28.140 に答える
1

禁止されたエラーは、post メソッドを使用し、サーバー側で CORS がクライアント CORS と連携するように実装されていないためです。

于 2013-11-26T20:55:54.353 に答える
0

絶対リンクを使用してみてください(私にとってはうまくいきました)。

于 2012-05-16T19:27:08.627 に答える