Sto utilizzando lo jQuery File Upload plugin by Blueimp per caricare immagini su un server. Il problema è che il server mittente è admin.example.com
e il server ricevente in cui sono archiviate le immagini è su www.example.com
. Stesso dominio, sottodominio diverso.L'intestazione PHP non funziona per Access-Control-Allow-Origin
ho seguito la instructions here on setting up cross-domain uploads, e tutto sembra essere corretta per quanto riguarda il codice, ma quando provo a caricare le immagini, ottengo questo errore:
XMLHttpRequest cannot load http://www.example.com/upload/. Origin http://admin.example.com is not allowed by Access-Control-Allow-Origin.
La cartella di upload non hanno permessi di lettura e scrittura .
Inserirò il mio codice qui sotto: se qualcuno può mostrarmi come risolvere il problema, faccelo sapere. Avevo già chiesto informazioni su questo e avrei provato altre soluzioni (upload di iframe e trasferimento di file ftp). Nessuno di questi sarà meglio per la mia situazione, e sarebbe più semplice se solo potessi farlo in questo modo ...
RICEZIONE SERVER
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();
server di invio
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,
});
});
Ancora una volta ho provato il caricamento del file iframe, quindi per favore non suggerirlo a meno che tu non possa darmi il codice completo funzionante ...
Ho anche provato lo header('Access-Control-Allow-Origin: *');
ma ho ottenuto lo stesso errore ... Sto cercando di farlo terminare entro il fine settimana, quindi gradirei qualsiasi aiuto che posso ottenere. :)
Grazie!
EDIT: ecco le intestazioni di risposta per le opzioni richieste non riuscite
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
Guarda le richieste fatte dal tuo browser. Prima farà una richiesta OPTIONS (non GET o POST). Controlla se il tuo server risponde con le intestazioni corrette. La richiesta _real_ non ha realmente bisogno delle intestazioni CORS. – Halcyon
Sembra che stia gestendo OPZIONI – mplungjan
@FritsvanCampen vedi la mia modifica sopra, non vedo nulla per 'Access-Control-Allow-Origin' ... – Caleb