दिलचस्प पोस्ट
जावास्क्रिप्ट के साथ दो तिथियों की तुलना करें कस्टम विशेषता HTML विशेषता MVC5 को प्रतिबिंबित करती है त्रुटि: अपेक्षित `2015-05-29 T19: 06: 16.69320 9 'एक तारीख होने के लिए – कोणीय त्रुटि 1066: सुअर, जेनेरिक समाधान में अन्य नाम के लिए हेरेटर को खोलने में असमर्थ किसी भी लम्बाई के अनुरोधों को अनुमति देने के लिए web.config को कॉन्फ़िगर कैसे करें I लीप वर्ष की गणना के लिए जावा कोड सी # SQL सर्वर डेटाटाइव के समतुल्य जावा में स्ट्रिंग डेटा की संपीड़न और डीकंप्रेसन अस्थायी बिंदु अचूकता उदाहरण गीट पुश त्रुटि: ऑब्जेक्ट को रिपॉज़िटरी डेटाबेस में जोड़ने के लिए अपर्याप्त अनुमति पृष्ठभूमि का रंग सीएसएस से दाएं सीधा भरें जावा सशर्त संकलन: कैसे कोड विखंडू संकलित होने से रोकने के लिए? बिटमैप, बिटमैप। रीसायकल (), कमजोर संदर्भ और कचरा संग्रहण यह कैसे "सरणी का आकार" टेम्पलेट फ़ंक्शन कार्य करता है? पायथन सूची अनुवर्ती व्यवहार

अभिगम नियंत्रण-अनुमति-उत्पत्ति द्वारा उत्पत्ति की अनुमति नहीं है

मैं एक Ajax.request बना रहा हूं। Ajax.request टच 2 एप्लीकेशन ( Ajax.request में लपेटा हुआ) में एक दूरस्थ PHP सर्वर पर Ajax.request

सर्वर से प्रतिक्रिया निम्न है:

XMLHttpRequest लोड नहीं कर सकता http://nqatalog.negroesquisso.pt/login.php उत्पत्ति http://localhost:8888 तक प्रवेश-नियंत्रण-अनुमति-मूल द्वारा अनुमति नहीं है

मैं इस समस्या को कैसे ठीक करुं?

वेब के समाधान से एकत्रित समाधान "अभिगम नियंत्रण-अनुमति-उत्पत्ति द्वारा उत्पत्ति की अनुमति नहीं है"

मैंने कुछ समय पहले इस मुद्दे पर एक लेख लिखा था, क्रॉस डोमेन AJAX ।

यदि आपको जवाब सर्वर पर नियंत्रण है तो इसे संभालने का सबसे आसान तरीका: के लिए एक प्रतिक्रिया हैडर जोड़ना है:

 Access-Control-Allow-Origin: * 

यह क्रॉस-डोमेन अजाक्स की अनुमति देगा। PHP में, आप इस तरह की प्रतिक्रिया को संशोधित करना चाहेंगे:

 <?php header('Access-Control-Allow-Origin: *'); ?> 

आप बस अपर कॉन्फ़िगरेशन या एचटीएक्सस फ़ाइल में Header set Access-Control-Allow-Origin * सेटिंग डाल सकते हैं। यह सिर्फ एक जादू की तरह काम करता है

टिप्पणियों से, यह एक महत्वपूर्ण नोट है: वाइल्डकार्ड किसी भी डोमेन को आपके होस्ट पर अनुरोध भेजने की अनुमति दे रहा है। मैं एक विशेष डोमेन के साथ तारांकन को बदलने की सलाह देता हूं कि आप स्क्रिप्ट पर चलेंगे

यदि आपके पास सर्वर पर नियंत्रण नहीं है, तो आप इस तर्क को अपने क्रोम लॉन्चर में जोड़ सकते हैं: – --disable-web-security

ध्यान दें कि मैं इसे सामान्य "वेब सर्फिंग" के लिए उपयोग नहीं करूंगा संदर्भ के लिए, यह पोस्ट देखें: क्रोम में समान मूल नीति को अक्षम करें ।

एक आप वास्तव में आवेदन बनाने और डिवाइस पर लोड करने के लिए फोनगैप का उपयोग करते हैं, यह एक मुद्दा नहीं होगा

यदि आप अपाचे का उपयोग कर रहे हैं तो बस जोड़ें:

 <ifModule mod_headers.c> Header set Access-Control-Allow-Origin: * </ifModule> 

आपके कॉन्फ़िगरेशन में इससे इंटरनेट पर किसी भी अन्य साइट से आपके वेबसर्वर से सभी प्रतिक्रियाएं सुलभ होंगी। यदि आप अपने मेजबान पर केवल किसी विशिष्ट सर्वर द्वारा उपयोग की जाने वाली सेवाओं की अनुमति देते हैं तो आप मूल सर्वर के यूआरएल के साथ * बदल सकते हैं:

 Header set Access-Control-Allow-Origin: http://my.origin.host 

यह पहला प्रश्न / उत्तर था जो मेरे लिए ऊपर उठाया गया था जब मेरे डेटा के स्रोत के रूप में एएसपी.नेट एमवीसी का उपयोग करते हुए एक ही समस्या को हल करने की कोशिश कर रहा था। मुझे एहसास है कि यह PHP प्रश्न हल नहीं करता है, लेकिन यह मूल्यवान होने के लिए पर्याप्त से संबंधित है।

मैं asp.net mvc का उपयोग कर रहा हूँ ग्रेग ब्रैन्ट के ब्लॉग पोस्ट ने मेरे लिए काम किया। अंत में, आप एक विशेषता बनाते हैं, [HttpHeaderAttribute("Access-Control-Allow-Origin", "*")] , कि आप नियंत्रक कार्यों में जोड़ सकते हैं

उदाहरण के लिए:

 public class HttpHeaderAttribute : ActionFilterAttribute { public string Name { get; set; } public string Value { get; set; } public HttpHeaderAttribute(string name, string value) { Name = name; Value = value; } public override void OnResultExecuted(ResultExecutedContext filterContext) { filterContext.HttpContext.Response.AppendHeader(Name, Value); base.OnResultExecuted(filterContext); } } 

और उसके बाद इसका उपयोग करते हुए:

 [HttpHeaderAttribute("Access-Control-Allow-Origin", "*")] public ActionResult MyVeryAvailableAction(string id) { return Json( "Some public result" ); } 

यदि आपके पास ASP.NET / ASP.NET MVC अनुप्रयोग है, तो आप इस हैडर को Web.config फ़ाइल के माध्यम से शामिल कर सकते हैं:

 <system.webServer> ... <httpProtocol> <customHeaders> <!-- Enable Cross Domain AJAX calls --> <remove name="Access-Control-Allow-Origin" /> <add name="Access-Control-Allow-Origin" value="*" /> </customHeaders> </httpProtocol> </system.webServer> 

मैट मोम्ब्रिया सर्वर साइड के लिए सही है, तो आप एक और समस्या में भाग ले सकते हैं जो श्वेतसूची में अस्वीकृति अस्वीकृति है।

आपको अपने phonegap.plist को कॉन्फ़िगर करना होगा। (मैं फोन के पुराने संस्करण का उपयोग कर रहा हूं)

कॉर्डोवा के लिए, नामकरण और निर्देशिका में कुछ बदलाव हो सकते हैं। लेकिन इस चरण में ज्यादातर एक ही होना चाहिए।

सबसे पहले सहायक फ़ाइलों का चयन करें> PhoneGap.plist

यहां छवि विवरण दर्ज करें

तब "बाहरीहोस्ट" के अंतर्गत

शायद " http://nqatalog.negroesquisso.pt " के मूल्य के साथ एक प्रविष्टि जोड़ें, मैं केवल डीबगिंग उद्देश्यों के लिए * का उपयोग कर रहा हूं।

यहां छवि विवरण दर्ज करें

मैं आपको इस एक के लिए एक सरल समाधान देगा मेरे मामले में मेरे पास सर्वर तक पहुंच नहीं है I उस स्थिति में आप एक्सेस-कंट्रोल-अनुमति-मूल को अनुमति देने के लिए अपने Google Chrome ब्राउज़र में सुरक्षा नीति बदल सकते हैं। यह बहुत आसान है:

  1. एक क्रोम ब्राउज़र शॉर्टकट बनाएं
  2. शॉर्ट कट आइकन -> गुण -> शॉर्टकट -> लक्ष्य क्लिक करें

"C:\Program Files\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files --disable-web-security में सरल पेस्ट "C:\Program Files\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files --disable-web-security

स्थान भिन्न हो सकता है अब उस शॉर्टकट पर क्लिक करके क्रोम खोलें।

यह किसी भी व्यक्ति के लिए आसान हो सकता है जिसे रेफ़रलर के दोनों 'www' और 'non-www' संस्करणों के लिए अपवाद की आवश्यकता है:

  $referrer = $_SERVER['HTTP_REFERER']; $parts = parse_url($referrer); $domain = $parts['host']; if($domain == 'google.com') { header('Access-Control-Allow-Origin: http://google.com'); } else if($domain == 'www.google.com') { header('Access-Control-Allow-Origin: http://www.google.com'); } 

यदि आप क्रोमर का उपयोग कर रहे हैं तो यह प्लगइन उपयोग करें

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi/related?hl=en

यदि आप एक क्रोम एक्सटेंशन लिख रहे हैं और यह त्रुटि प्राप्त करें, तो सुनिश्चित करें कि आपने एपीआई के बेस यूआरएल को अपने manifest.json की अनुमतियों को ब्लॉक किया है , उदाहरण:

 "permissions": [ "https://itunes.apple.com/" ] 

विभिन्न एपीआई के साथ काम करते समय मैंने इसे कई बार चलाया है I अक्सर "त्वरित और कॉलबैक =" जोड़ना है एक स्ट्रिंग के अंत में कभी-कभी एम्परसेंड को एक वर्ण कोड होना चाहिए, और कभी-कभी "?": "? Callback =?" (देखें jQuery के साथ forecast.io एपीआई उपयोग )

यह समान-मूल नीति के कारण है मोज़िला डेवलपर नेटवर्क या विकिपीडिया पर अधिक देखें।

मूल रूप से, आपके उदाहरण में, आपको http://nqatalog.negroesquisso.pt/login.php पृष्ठ को केवल nqatalog.negroesquisso.pt से लोड करने की आवश्यकता है, localhost नहीं।

रेल पर रूबी में , आप एक नियंत्रक में कर सकते हैं:

 headers['Access-Control-Allow-Origin'] = '*' 

आप इसे ब्रॉसर बनाकर सर्वर को संशोधित किए बिना काम कर सकते हैं, जिसमें हेडर Access-Control-Allow-Origin: * HTTP विकल्प 'प्रतिक्रियाओं में शामिल है।

क्रोम में, इस एक्सटेंशन का उपयोग करें । यदि आप मोज़िला पर हैं तो यह उत्तर देखें ।

हमें क्रोम में परीक्षण किए गए फोनगैप एप्लिकेशन के साथ भी यही समस्या है। क्रोम खोलने से पहले हर रोज बैच फाइल का इस्तेमाल करते हुए एक विंडोज़ मशीन। इसे चलाने से पहले याद रखें आपको कार्य प्रबंधक से क्रोम के सभी उदाहरण को साफ करने की आवश्यकता है या आप पृष्ठभूमि में नहीं चलने के लिए क्रोम का चयन कर सकते हैं।

बैच: (सीएमडी का उपयोग करें)

 cd D:\Program Files (x86)\Google\Chrome\Application\chrome.exe --disable-web-security 

यदि आप अपाचे के तहत हैं, तो बस इस सामग्री के साथ अपनी निर्देशिका में .htaccess फ़ाइल जोड़ें:

हैडर सेट एक्सेस-कंट्रोल-अनुमति-उत्पत्ति: *

हेडर ने एक्सेस-कंट्रोल-अनुमति-हेडर सेट किया: सामग्री-प्रकार

हेडर ने ऐक्सेस-कंट्रोल-अनुमति-विधियों को सेट किया है: *

यदि आप इसे Angular.js में प्राप्त करते हैं, तो सुनिश्चित करें कि आप इस तरह से अपनी पोर्ट नंबर से बचें:

 var Project = $resource( 'http://localhost\\:5648/api/...', {'a':'b'}, { update: { method: 'PUT' } } ); 

इसके बारे में अधिक जानकारी के लिए यहां देखें

रूबी सिनात्रा में

 response['Access-Control-Allow-Origin'] = '*' 

सभी के लिए या

 response['Access-Control-Allow-Origin'] = 'http://yourdomain.name' 

जब आप अनुरोध प्राप्त कर सकते हैं

 var origin = (req.headers.origin || "*"); 

जब आपको प्रतिक्रिया देना है तो उस तरह से कुछ के साथ जाएं:

 res.writeHead( 206, { 'Access-Control-Allow-Credentials': true, 'Access-Control-Allow-Origin': origin, } ); 
  **Add this meta tag in your Webservice** header('Content-type: application/json'); header('Access-Control-Allow-Origin: *'); 

वाइल्डकार्ड एक बहुत ही सुरक्षित विकल्प नहीं है आप इसे अधिक विशिष्ट होना चाहते हैं – मैंने उसी प्रश्न पर यहां लिखा जवाब चेकआउट किया है; एक्सेस-कंट्रोल-अनुमति-मूल बाईपास कैसे करें?