• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

XF 1.2 Nginx Rewrite Rule - Error on Attachment Upload

Bill.D

Active member
#1
Hey All,

I am getting an error when I try and upload an attachment to a thread post. There does not show up in the Server Error Log but rather on the browsers end. The error has been confirmed on multiple browsers and computers. I have confirmed that it is my Nginx rewrite rule.

My question is; How can I change this rewrite rule to be able to use the cdn for viewing already uploaded Attachments, but not interfere with the upload process?

Here is the NGINX rule:
Code:
        location ~ ^/(attachments|badges) {
            if ($host ~* ^forum\.) {
                    rewrite ^ https://xf.data.bonusfeber.com$request_uri? permanent;
                }      
        }
These are the files that Safari indicated:
Screen Shot 2013-09-13 at 10.17.05 AM.png
Here is the Error from Safari:

I Labeled the line with this: "( IT SHOWS THE ERROR ON THIS LINE --> )"
Code:
/*
* XenForo attachment_editor.min.js
* Copyright 2010-2013 XenForo Ltd.
* Released under the XenForo License Agreement: http://xenforo.com/license-agreement
*/
(function(e,l,j){var h=XenForo.speed.normal,g=XenForo.speed.fast;XenForo.AttachmentUploader=function(c){var f=e(c.data("trigger"));c.closest("form");var a=e(c.data("placeholder")),b={},d=null,i=null,m=c.data("maxfilesize");c.data("maxuploads");var g=c.data("extensions"),h=c.data("uniquekey");c.show();var k=XenForo.canonicalizeUrl(c.data("flashurl")||"js/swfupload/Flash/swfupload.swf");console.info("flash url: %s",k);typeof SWFUpload=="function"&&!l.navigator.userAgent.match(/Android|iOS|iPhone|iPad|Mobile Safari/i)&&
(d=new SWFUpload({upload_url:c.data("action"),file_post_name:c.data("postname"),file_types:"*."+(g.toLowerCase()+","+g.toUpperCase()).replace(/,/g,";*."),post_params:e.extend({_xfToken:XenForo._csrfToken,_xfNoRedirect:1,_xfResponseType:"json"},b),button_placeholder_id:a.attr("id"),button_width:1,button_height:1,button_window_mode:SWFUpload.WINDOW_MODE.TRANSPARENT,button_cursor:SWFUpload.CURSOR.HAND,flash_url:k,prevent_swf_caching:!1,swfupload_loaded_handler:function(){this.setButtonDimensions(f.outerWidth(),
f.outerHeight());c.find(".HiddenInput").each(function(a,b){d.addPostParam(e(b).data("name"),e(b).data("value"))});e(j).bind("CSRFRefresh",function(a){a.ajaxData&&(d.addPostParam("_xfToken",a.ajaxData.csrfToken),d.addPostParam("_xfSessionId",a.ajaxData.sessionId))})},file_dialog_complete_handler:function(){try{this.getStats().files_queued>0&&this.startUpload(this.getFile(0).ID)}catch(a){this.debug(a)}},file_queued_handler:function(a){var b;switch(a.name.substr(a.name.lastIndexOf(".")).toLowerCase()){case ".jpg":case ".jpeg":case ".jpe":case ".png":case ".gif":b=
!0;break;default:b=!1}var d=e.Event("AttachmentQueueValidation");d.file=a;d.swfUpload=this;d.isImage=b;c.trigger(d);if(!d.isDefaultPrevented())a.size>m&&!b?(this.cancelUpload(a.id,!1),typeof this.settings.file_queue_error_handler=="function"&&this.settings.file_queue_error_handler.call(this,a,SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT,"The uploaded file is too large.")):(d=e.Event("AttachmentQueued"),d.file=a,d.swfUpload=this,d.isImage=b,c.trigger(d))},file_queue_error_handler:function(a,b,d){var f=
e.Event("AttachmentQueueError");f.file=a;f.errorCode=b;f.message=d;f.swfUpload=this;c.trigger(f);f.isDefaultPrevented()||i(a,b,d)},upload_start_handler:function(a){console.log("Uploading %s",a.name)},upload_progress_handler:function(a,b){c.trigger({type:"AttachmentUploadProgress",file:a,bytes:b,swfUpload:this})},upload_success_handler:function(a,b){try{var d=e.parseJSON(b)}catch(f){console.warn(f);return}d.error?c.trigger({type:"AttachmentUploadError",file:a,ajaxData:d,swfUpload:this}):c.trigger({type:"AttachmentUploaded",
( IT SHOWS THE ERROR ON THIS LINE --> ) file:a,ajaxData:d,swfUpload:this})},upload_error_handler:function(a,b,d){console.warn("Upload failed: %o",arguments);c.trigger({type:"AttachmentUploadError",file:a,errorCode:b,message:d,ajaxData:{error:[c.data("err-unknown")]},swfUpload:this})},upload_complete_handler:function(){try{this.getStats().files_queued>0?this.startUpload(this.getFile(0).ID):console.info("All files uploaded.")}catch(a){this.debug(a)}}}),i=function(a,b,d){b=c.data("err"+b)||d;a?XenForo.alert(b+"<br /><br />"+a.name):XenForo.alert(b)});
e(j).bind("AutoInlineUploadComplete",function(a){if(h&&a.ajaxData&&h!==a.ajaxData.key)return!1;if(e(a.target).is("form.AttachmentUploadForm"))return f.overlay()&&f.overlay().close(),c.trigger({type:"AttachmentUploaded",ajaxData:a.ajaxData}),!1});return{getSwfUploader:function(){return d},swfAlert:i}};XenForo.AttachmentEditor=function(c){this.setVisibility=function(a){var b=c.closest(".ctrlUnit"),d=c.find(".AttachmentInsertAllBlock"),f=c.find(".AttachedFile:not(#AttachedFileTemplate)"),e=f.filter(".AttachedImage");
console.log("Attachments changed, total files: %d, images: %d",f.length,e.length);b.length==0&&(b=c);a===!0?f.length?(e.length>1?d.show():d.hide(),b.show()):b.hide():f.length?(e.length>1?b.is(":hidden")?d.show():d.xfFadeDown(XenForo.speed.fast):b.is(":hidden")?d.hide():d.xfFadeUp(XenForo.speed.fast,!1,XenForo.speed.fast,"swing"),b.xfFadeDown(XenForo.speed.normal)):(d.slideUp(XenForo.speed.fast),b.xfFadeUp(XenForo.speed.normal,!1,!1,"swing"))};this.setVisibility(!0);e("#AttachmentUploader").bind({AttachmentQueued:function(a){console.info("Queued file %s (%d bytes).",
a.file.name,a.file.size);var b=e("#AttachedFileTemplate").clone().attr("id",a.file.id);b.find(".Filename").text(a.file.name);b.find(".ProgressCounter").text("0%");b.find(".ProgressGraphic span").css("width","0%");a.isImage&&b.addClass("AttachedImage");b.xfInsert("appendTo",".AttachmentList.New",null,h);b.find(".AttachmentCanceller").css("display","block").click(function(){a.swfUpload.cancelUpload(a.file.id);b.xfRemove(null,null,g,"swing")});c.trigger("AttachmentsChanged")},AttachmentUploadProgress:function(a){console.log("Uploaded %d/%d bytes.",
a.bytes,a.file.size);var b=Math.min(100,Math.ceil(a.bytes*100/a.file.size)),d=b+"%",a=e("#"+a.file.id),c=a.find(".ProgressCounter"),f=a.find(".ProgressGraphic");c.text(d);f.css("width",d);b>=100&&a.find(".AttachmentCanceller").prop("disabled",!0).addClass("disabled");f.width()>c.outerWidth()&&c.appendTo(f)},AttachmentUploadError:function(a){var b="";e.each(a.ajaxData.error,function(a,c){b+=c+"\n"});XenForo.alert(b+"<br /><br />"+a.file.name);e("#"+a.file.id).xfRemove();console.warn("AttachmentUploadError: %o",
( IT SHOWS THE ERROR ON THIS LINE --> ) a)},AttachmentUploaded:function(a){if(a.file){var b=e("#"+a.file.id),d=b.find(".AttachmentText"),f=e(a.ajaxData.templateHtml),g;d.fadeOut(XenForo.speed.fast,function(){f.find(".AttachmentText").xfInsert("insertBefore",d,"fadeIn",XenForo.speed.fast);g=b.find(".Thumbnail");g.html(f.find(".Thumbnail").html());d.xfRemove();b.attr("id","attachment"+a.ajaxData.attachment_id)})}else b=e("#attachment"+a.ajaxData.attachment_id),b.length||(b=e(a.ajaxData.templateHtml).xfInsert("appendTo",c.find(".AttachmentList.New"),
null,h));c.trigger("AttachmentsChanged")}});var f=e.context(this,"setVisibility");e("#QuickReply").bind("QuickReplyComplete",function(){c.find(".AttachmentList.New li:not(#AttachedFileTemplate)").xfRemove(null,f)});c.bind("AttachmentsChanged",f)};XenForo.AttachmentInserter=function(c){c.click(function(f){var a=c.closest(".AttachedFile").find(".Thumbnail a"),b=a.data("attachmentid"),d;d=a.find("img").attr("src");a=a.attr("href");f.preventDefault();c.attr("name")=="thumb"?(f="[ATTACH]"+b+"[/ATTACH] ",
d='<img src="'+d+'" class="attachThumb bbCodeImage" alt="attachThumb'+b+'" /> '):(f="[ATTACH=full]"+b+"[/ATTACH] ",d='<img src="'+a+'" class="attachFull bbCodeImage" alt="attachFull'+b+'" /> ');if(b=XenForo.getEditorInForm(c.closest("form")))if(b.$editor){b.insertHtml(d);var e=b.$editor.data("xenForoElastic");e&&(setTimeout(function(){e()},250),setTimeout(function(){e()},1E3))}else b.val(b.val()+f)})};XenForo.AttachmentDeleter=function(c){c.css("display","block").click(function(c){var a=e(c.target),
b=a.attr("href")||a.data("href"),d=a.closest(".AttachedFile"),c=a.closest(".AttachedFile").find(".Thumbnail a").data("attachmentid");if(b){d.xfFadeUp(XenForo.speed.normal,null,g,"swing");XenForo.ajax(b,"",function(a){if(XenForo.hasResponseError(a))return d.xfFadeDown(XenForo.speed.normal),!1;var b=d.closest(".AttachmentEditor");d.xfRemove(null,function(){b.trigger("AttachmentsChanged")},g,"swing")});if(c&&(a=XenForo.getEditorInForm(a.closest("form")))&&a.$editor)a.$editor.find("img[alt=attachFull"+
c+"], img[alt=attachThumb"+c+"]").remove(),(c=a.$editor.data("xenForoElastic"))&&c();return!1}console.warn("Unable to locate href for attachment deletion from %o",a)})};XenForo.AttachmentInsertAll=function(c){c.click(function(){e(".AttachmentInserter[name="+c.attr("name")+"]").each(function(c,a){e(a).trigger("click")})})};XenForo.AttachmentDeleteAll=function(c){c.click(function(){e(".AttachmentDeleter").each(function(c,a){e(a).trigger("click")})})};XenForo.register(".AttachmentUploader","XenForo.AttachmentUploader");
XenForo.register(".AttachmentEditor","XenForo.AttachmentEditor");XenForo.register(".AttachmentInserter","XenForo.AttachmentInserter");XenForo.register(".AttachmentDeleter","XenForo.AttachmentDeleter");XenForo.register(".AttachmentInsertAll","XenForo.AttachmentInsertAll");XenForo.register(".AttachmentDeleteAll","XenForo.AttachmentDeleteAll")})(jQuery,this,document);
 

Mike

XenForo developer
Staff member
#2
You're rewriting the URL to the attachment upload process as well with that. You're likely triggering cross-domain issues.
 

Bill.D

Active member
#3
Dang :unsure: .. Is there anything unique about the upload process that I could have the rewrite rule ignore when encountered? This way it would only rewrite non upload URLs.