15

Blueimpの jQuery File Upload プラグインを使用して、画像をサーバーにアップロードしています。問題は、送信サーバーがadmin.example.comで、画像が保存されている受信サーバーが にあることwww.example.comです。同じドメイン、別のサブドメイン。

クロスドメイン アップロードの設定に関するこちらの手順に従いました。コードに関してはすべて正しいように見えますが、画像をアップロードしようとすると、次のエラーが発生します。

XMLHttpRequest cannot load http://www.example.com/upload/. Origin http://admin.example.com is not allowed by Access-Control-Allow-Origin.

アップロード フォルダーには、読み取りと書き込みのアクセス許可があります。

以下にコードを掲載します。これを修正する方法を教えていただける方がいらっしゃいましたら、お知らせください。以前にこれについて質問したことがあり、他の解決策 (iframe のアップロードと ftp ファイルの移動) を試すつもりでした。これらはどちらも私の状況には最適ではありません。この方法で実行できれば最も簡単です...

受信サーバー

index.php

<?php
    header('Access-Control-Allow-Origin: http://admin.example.com');  //I have also tried the * wildcard and get the same response
    header("Access-Control-Allow-Credentials: true");
    header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
    header('Access-Control-Max-Age: 1000');
    header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description');
?>
<?php

    error_reporting(E_ALL | E_STRICT);
    require('UploadHandler.php');
    $upload_handler = new UploadHandler();

送信サーバー

main.js

$(function () {
    'use strict';

    // Initialize the jQuery File Upload widget:
    $('#fileupload').fileupload({
        // Uncomment the following to send cross-domain cookies:
        xhrFields: {withCredentials: true},
        url: 'http://admin.example.com/upload/',
        disableImageResize: false,
        dropZone: $('#dropzone'),
        imageMaxWidth: 1800,
        imageMaxHeight: 1800,
    });
});

繰り返しますが、iframe ファイルのアップロードを試みたので、完全に機能するコードを提供できない限り、提案しないでください...

私も試しheader('Access-Control-Allow-Origin: *');ましたが、同じエラーが発生します...週末までにこれを完成させようとしているので、助けていただければ幸いです。:)

ありがとう!

編集: 失敗した OPTIONS リクエストの応答ヘッダーは次のとおりです

Allow:OPTIONS, TRACE, GET, HEAD, POST
Content-Length:0
Date:Tue, 27 Aug 2013 15:08:29 GMT
Public:OPTIONS, TRACE, GET, HEAD, POST
Server:Microsoft-IIS/7.5
X-Powered-By:ASP.NET
4

3 に答える 3

1

IIS サーバーで操作しているため、web.config でこれを設定しようとします。

https://gist.github.com/corydeppen/3518666

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <!-- allowing all-->
            <add name="Access-Control-Allow-Origin" value="*" />
        </customHeaders>
    </httpProtocol>
</system.webServer>
于 2014-09-11T20:41:25.023 に答える
0

私にとっての解決策は、UTF-8 encoding を使用して PHP ファイルを再保存することでした。どうやら元のテキスト ファイル (簡単なテストのためにコピーして上書きしたもの) は、別のファンキーなエンコーディングを使用していたようです。

于 2016-06-22T03:07:54.840 に答える