سؤال

وأنا باستخدام التعليمات البرمجية التالية إلى طلب بيانات من تطبيق ASP.net MVC. أنا أيضا باستخدام TcpTrace بحيث أستطيع أن أرى الطلب / استجابة.

if (isInteger($('#txtDay').val()) && isInteger($('#txtMonth').val()) && isInteger($('#txtYear').val())) {
    $.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        url: strApi + 'wip/job/getsummary/' + $('#txtYear').val() + '/' + $('#txtMonth').val() + '/' + $('#txtDay').val(),
        data: '{}',
        dataType: 'json',
        cache: false,
        beforeSend: function(XMLHttpRequest) { ShowLoading(); },
        success: function(data, textStatus) {
            ShowJobSummaryList(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            HideLoading();
            ShowStatus('unable to retrieve job summary list');
            alert(XMLHttpRequest.statusText);
            alert(textStatus);
        },
        complete: function(XMLHttpRequest, textStatus) {
            HideLoading();
        }
    });
}

وعن طريق IE كل شيء يعمل بشكل جيد - يتم تعيين نوع المحتوى بشكل صحيح إلى التطبيق / سلمان. ومع ذلك ظل فايرفوكس 3.5.5، ونوع المحتوى مفقود:

OPTIONS /api/wip/job/getsummary/2009/11/25 HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Origin: http://localhost
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with

وهذا يتسبب في ASP.net MVC للعودة XML. هل يستطيع أحد أن يفسر لماذا فايرفوكس لا يرسل نوع المحتوى؟

هل كانت مفيدة؟

المحلول

ويبدو أنه يقوم بإرسال طلب الخيارات. السبب العادي لهذه المسألة هو عند محاولة لاستخدام جعل طلب اياكس إلى مجال آخر فيها بعض المتصفحات (بما في فايرفوكس - راجع <لأ href = "https://developer.mozilla.org/En/HTTP_access_control" يختلط = "نوفولو noreferrer "> هنا ) لا تسمح.

هل لك أن توضح إذا كان عنوان URL الخاص بك يجعل طلب على مجال آخر. إذا كانت هذه هي الحالة سيكون لديك لاستخدام jsonp أو استخدام الملقم الوكيل.

نصائح أخرى

وشيء مشابه يحدث معي. عندما كنت اطلاق النار على نفس الطلب مع عازف الكمان يعمل ولكن عندما كنت اطلاق النار عليه مع فايرفوكس HttpRequester، فإنه لا يفعل ذلك. ولذا فإنني مقارنة كل من الطلبات ويبدو HttpRequester يغير طلب رؤوس. حاولت عدة طرق للحصول على عمل، حتى تحرير طلب الخام، ولكن لا يزال عندما تحقق الطلب النهائي على نوع المحتوى تتكرر مثل ذلك:

Content-Type: application/json, application/json

ويضيف أيضا مجموعة من رؤوس أخرى. ولكن عندما راجعت الطلب النهائي التي عازف الكمان كان مجرد:

Content-Type: application/json

وبالتالي فإنه يعمل.

وكما أنني وجدت الاستعراضات على موزيلا فايرفوكس دعم المنتج الصفحة يشكو من علة مماثلة. ولكن أتذكر هذا العمل من قبل في HttpRequester ذلك أن تفعل شيئا مع أحدث إصدار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top