Hur man undviker CORS preflight begäran om filöverföring Stack Overflow

Jag använder jquery-FileUpload att tillåta användare att ladda upp filer till en extern tjänst (Cloudinary att vara mer specifik):

Eftersom det är en yttre mål, initierar webbläsaren en CORS begäran. Jag märkte dock att webbläsaren prepends en CORS preflight begäran. http://www.html5rocks.com/en/tutorials/cors/ ger ganska bra insikter om när en preflight begäran utlöses och när inte. Såvitt jag förstår, min begäran uppfyller alla kriterier för att vara en CORS enkel begäran (se avsnittet ”Typer av CORS förfrågningar).

De filuppladdning begäran som skickas till den externa tjänsten:

den ytterligare preflight begäran som skickas till den externa tjänste före begäran filöverföring:


Finns det ett sätt att undvika detta extra preflight begäran? Såvitt jag ser det, är begäran filöverföring en CORS enkel begäran eftersom det är en HTTP POST med Content-Type multipart / form-data och endast enkel begäran HTTP-huvuden.

Anledningen till att jag vill bli av med extra preflight begäran är att Cloudinary skickar en HTTP 302/304 omdirigering som ett svar på filöverföringen. Webbläsare inte följer dessa omdirigeringar. Chrome misslyckas med följande meddelande:

bad 12 februari ’14 vid 09:12

Problemet är att XHR huvudet inte skickas med en begäran om att Cloudinary som orsakar Cloudinary att omdirigera (IE reserv) i stället för att returnera JSON. Detta orsakas oftast på grund av felaktig initiering av widgeten. Du behöver vanligtvis inte att ringa $ ( ‘. Cloudinary-FileUpload). FileUpload () själv som detta görs av den medföljande Java. Om du fortfarande behöver initiera widgeten manuellt, använd $ ( ‘. Cloudinary-FileUpload). Cloudinary_fileupload ().

svarat 13 februari ’14 vid 02:54

Källa: stackoverflow.com

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *

7 + tolv =