पोस्ट करते समय मैंने पूरी तरह से खोज की है लेकिन मेरे विशेष परिस्थिति में इस समस्या का समाधान नहीं मिल रहा है।सीओआरएस सक्षम है लेकिन प्रीफ़लाइट के लिए प्रतिक्रिया में अवैध HTTP स्थिति कोड 404 है जब JSON
फिडलर (POST) का उपयोग कर क्रॉस-डोमेन सेवा कॉल सही ढंग से निष्पादित करते हैं और डेटा प्राप्त होता है। हालांकि, ब्राउजर (क्रोम) के माध्यम से मुझे संदेश मिल रहा है 'प्रीफलाइट में अमान्य HTTP स्टेटस कोड 404'
मेरे पास एक वेब एपीआई एप्लिकेशन है और मैंने सीओआरएस स्थापित किए हैं और यह सुनिश्चित किया है कि निम्नलिखित web.config फ़ाइल में मौजूद है:
var secretKey = 'difusod7899sdfiertwe08wepifdfsodifyosey',
url = 'http://api.intrinsic.co.uk/api/v1/PTS/ActiveDrivers?api_key=098werolllfWnCbPGAuIXVOJidDHRfYcgxImMlxTXopuekXrSOqOWzEAIdeNTWGPQPpyHxgVGsFysGFKPzq';
jQuery.ajax ({
url: url,
type: "POST",
data: JSON.stringify({ secretKey: secretKey}),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data){
var content = "<table class=\"container\"><thead><tr><th>Driver Number</th><th>Timestamp</th><th>VRN</th><th>Latitude</th><th>Longitude</th><th>Track Link</th></tr></thead><tbody>";
$.each(data.ActiveDrivers.DriverLocationStatus, function (index, element) {
content += "<tr><td>" + element.DriverNumber + "</td>";
content += "<td>" + dateFormat(element.Timestamp, "d/m/yy") + " " + dateFormat(element.Timestamp, "h:MM TT") + "</td>";
content += "<td>" + element.VRN + "</td>";
content += "<td>" + element.CurrentLatitude + "</td>";
content += "<td>" + element.CurrentLongitude + "</td>";
content += "<td><a href=\"https://www.google.co.uk/maps/place//@" + element.CurrentLatitude + "," + element.CurrentLongitude + ",15z/\" target='_blank'>Track »</a></td></tr>";
});
content += "</tbody></table>";
$("#result").html(content);
}
});
जाहिर है, के रूप में उल्लेख ही डोमेन पूरी तरह से काम करता है और, यह फ़िडलर का उपयोग कर काम करता है:
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
</system.webServer>
यहाँ अजाक्स कॉल है।
मुझे यकीन है कि यह ब्राउजर की प्रीफलाइट विकल्प जांच है जो सामग्री-प्रकार 'एप्लिकेशन/जेसन' के लिए असफल रहा है लेकिन मुझे यकीन नहीं है कि इसे कैसे ठीक किया जाए।
क्या web.config फ़ाइल में कुछ याद आ रही है जिसे मुझे जोड़ना चाहिए?
मैंने बिना किसी प्रभाव के 'सामग्री-प्रकार' को हटाने का प्रयास किया है।
मैं आशा व्यक्त की थी this article मुद्दा (यह होनहार लग रहा था), लेकिन एक ही त्रुटि का सामना कर रहा है का समाधान होगा:
XMLHttpRequest cannot load [URL]. Response for preflight has invalid HTTP status code 404
यह भी मेरे लिए काम करता .. –
आप कृपया मुझे इस पर मदद कर सके काम करना चाहिए लगता है: https://magento.stackexchange.com/questions/170342/ magento-htaccess-response-for-preflight-has-invalid-http-status-code-400 –
धन्यवाद काम किया। हैंडलर को भी जोड़ना महत्वपूर्ण है। – Dileep