クライアントからサーバーに画像をアップロードしてから、S3 AWSバケットにアップロードしようとしています。これは、ローカルサーバーでは有効ですが、ライブサーバーでは機能しません。4mbの画像ファイルをアップロードすると、プロダクションサーバーにアップロードするときにHTTP 413エラーが発生する
XMLHttpRequest cannot load https://api.parthenon-click.com/img_upload/cover. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.parthenon-click.com' is therefore not allowed access. The response had HTTP status code 413.
私はクライアントサーバー用にElasticBeanstalk PHP v5.4を、バックエンド用にExpress v4サーバーを搭載したノードv7.0を使用しています。クライアント側は単純なhtml/css/jQueryです。私は、ユーザーのライブラリから写真を取得し、使用してバックエンドにそれを渡します。これは、動作していれば、ファイルが1MB未満であると、画像を保存し
$.ajax({
url: api_url,
type: 'POST',
data: form,
processData: false,
contentType: false,
success: function(data){
console.log('upload successful!');
},
error: function(err){
console.log(err);
}
});
。私はまだ504のHTTPエラーが発生します。これは、ローカルサーバーを実行している限り、ファイルのサイズに関係なく機能します。
は、だから私はhtaccess
、body-parser
を増額しようとした、とmulter
制限:
ボディパーサー:
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true, parameterLimit:50000 }));
app.use(bodyParser.raw({ limit: '10mb'}));
Multer:
var upload = multer({
storage: storage,
limits: {
fileSize: 10000000
}
})
.htaccessファイル:
php_value upload_max_filesize 30M
私のヘッダーファイルは、他のすべてのタイプのAPI要求に対してうまくいきます。
router.use(function(req, res, next) {
// do logging
//set CORS policy to 'allow'
res.setHeader("Access-Control-Allow-Methods", "POST, PUT, OPTIONS, DELETE, GET");
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
最後に、すべてのドメインバージョンでSSLを有効にしました。
これは問題を解決していません。私はここで何が欠けていますか?
ノードとPHPの前にApacheまたはNginxを使用していますか? – CreasolDev
@CreasolDev Nginx –
その場合、私はおそらく、あなたの答えを持ってきました。 – CreasolDev