Ответ 1
Не получил никаких решений, поэтому я просто перевел его во временный каталог и использовал FTP, чтобы переместить его в другой домен....
Я использую плагин jQuery Upload Upload от Blueimp для загрузки изображений на сервер. Проблема заключается в том, что отправляющий сервер 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: *');
, но получаю ту же ошибку... Я пытаюсь сделать это законченным к выходным, поэтому я буду благодарен за любую помощь, которую я могу получить.:)
Спасибо!
EDIT: здесь заголовки ответов для неудавшегося запроса 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
Не получил никаких решений, поэтому я просто перевел его во временный каталог и использовал FTP, чтобы переместить его в другой домен....
Я использую эти заголовки и свою работу для меня
header('content-type: application/json; charset=utf-8');
header("access-control-allow-origin: *");
Я попытался бы установить это на web.config, поскольку вы работаете на сервере IIS:
https://gist.github.com/corydeppen/3518666
<system.webServer>
<httpProtocol>
<customHeaders>
<!-- allowing all-->
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
Решение для меня состояло в повторной сохранении файла PHP с использованием кодировки UTF-8. По-видимому, исходный текстовый файл (который я скопировал на место и перезаписал для быстрого теста) использовал другой фанк-код.