मैं कोर कैसे स्थापित करूं?


12

Drupal 8 में कोर में निर्मित RESTful वेब सेवा है और 8.2 के बाद से हमें cors मॉड्यूल की आवश्यकता नहीं है ।

अब हम उन सेवाओं का उपयोग करने के लिए, जिनमें डिफ़ॉल्ट। Service.yml फ़ाइल को सक्षम और कॉन्फ़िगर किया गया है, जैसा कि यहाँ निर्दिष्ट है

हालाँकि, मैं इस सेटअप को किसी अन्य डोमेन पर वेब सेवा तक पहुँचने की अनुमति देने के लिए कॉन्फ़िगर करने में सक्षम नहीं था।

मेरी वर्तमान सेवा। Cors के लिए सेटअप है:

cors.config:
    enabled: true
    # Specify allowed headers, like 'x-allowed-header'.
    allowedHeaders: ['x-csrf-token,authorization,content-type,accept,origin,x-requested-with']
    # Specify allowed request methods, specify ['*'] to allow all possible ones.
    allowedMethods: ['POST, GET, OPTIONS, DELETE, PUT']
    # Configure requests allowed from specific origins.
    allowedOrigins: ['*']
    # Sets the Access-Control-Expose-Headers header.
    exposedHeaders: false
    # Sets the Access-Control-Max-Age header.
    maxAge: 1000
    # Sets the Access-Control-Allow-Credentials header.
    supportsCredentials: false

मैं इस पर आगे विस्तृत कॉन्फ़िगरेशन खोजने के लिए googled लेकिन एक नहीं मिल सका।

मैं इसे दो अलग-अलग डोमेन में परीक्षण विकास के लिए बना रहा हूं।

उन सेवाओं के उपभोग के लिए वेब सेवाओं और लोकलहोस्ट कस्टम .dev डोमेन के लिए पैनथॉन देव वातावरण का उपयोग करना।

क्रोम कॉर्स एक्सटेंशन का उपयोग करके सेवा का उपयोग ठीक है।


यदि आपने पहले ही अपनी साइट / डिफ़ॉल्ट / सेवाओं को बदल दिया है। जैसा कि पिछले उत्तरों में कहा गया है, और यह काम नहीं करता है, तो सुनिश्चित करें कि आपके वेब सर्वर में CORS सक्षम है। उदाहरण के लिए, Nginx में आपको अपने सर्वर ब्लॉक कॉन्फ़िगरेशन में एक स्थान जोड़ना / संशोधित करना होगा https://enable-cors.org/server_nginx.html
Pin

जवाबों:


16

मैं काफी हाल ही में Pantheon पर भाग गया, और उम्मीद है कि यह मदद करता है अगर आप पहले से ही इसे हल नहीं किया है।

cors.config:
    enabled: true
    # Specify allowed headers, like 'x-allowed-header'.
    allowedHeaders: ['x-csrf-token','authorization','content-type','accept','origin','x-requested-with', 'access-control-allow-origin','x-allowed-header','*']
    # Specify allowed request methods, specify ['*'] to allow all possible ones.
    allowedMethods: ['*']
    # Configure requests allowed from specific origins.
    allowedOrigins: ['http://localhost/','http://localhost:3000','http://localhost:3001','http://localhost:3002','*']
    # Sets the Access-Control-Expose-Headers header.
    exposedHeaders: false
    # Sets the Access-Control-Max-Age header.
    maxAge: false
    # Sets the Access-Control-Allow-Credentials header.
    supportsCredentials: true

ध्यान देने योग्य कुछ बातें ...

Pantheon पर फ़ाइल के स्थान के बारे में, कृपया सुनिश्चित करें कि आपकी सेवा .yml फ़ाइल / साइटों / डिफ़ॉल्ट बनाम सिर्फ / साइटों में है। मैं गलत तरीके से इस धारणा के तहत था कि यह दोनों जगहों से काम करेगा। यह केवल तभी काम करेगा जब / साइट्स / डिफ़ॉल्ट निर्देशिका में।

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

कृपया यह भी ध्यान दें कि जबकि मेरा कोड स्निपेट एक पैन्थियोन सैंडबॉक्स के खिलाफ विकास के लिए अच्छी तरह से काम करेगा, आप संभवतः उत्पादन में जाने से पहले चीजों को थोड़ा और लॉक करना चाहेंगे। पंथियन HTTPS की पेशकश के साथ आप यह भी सुनिश्चित करना चाहते हैं कि यदि आप हेडर के माध्यम से जानकारी पास करने जा रहे हैं तो इसका उपयोग करना सुनिश्चित करेंगे। आशा है कि यह या तो आपकी मदद करता है यदि आप अभी भी मुद्दे हैं या कोई और है जो सड़क पर नीचे ठोकर खाई है।


4
अनुमति क्यों निर्दिष्ट करें और फिर '*' भी पास करें?
क्रिश्चियन

बस दोनों विकल्प दिखाने के लिए। कृपया एक या दूसरे को छोड़ देने के लिए स्वतंत्र महसूस करें।
शॉन मैथ्यूज

एक्सिडेंटहेडर्स गलत या एक सरणी होना चाहिए, प्रति drupal.org/project/drupal/issues/2905848
John

अगर किसी की दिलचस्पी है, तो मुझे विश्वास नहीं है कि अनुमत ऑरिजिन फ़ील्ड regex को स्वीकार करता है। मैंने कई उप-डोमेन को श्वेतसूची में रेगेक्स पैटर्न का उपयोग करने की कोशिश की, और ड्रुपल ने शिकायत की। मुझे इस उदाहरण की तरह, डोमेन, अल्पविराम से अलग की गई सूची का उपयोग करना था। मैं उम्मीद कर रहा था कि यह सेटिंग्स में भरोसेमंद-मेजबानों की तरह व्यवहार करेगा।
पीपीपी

9

खोजें: ... / साइट्स / डिफ़ॉल्ट / default.services.yml

प्रतिलिपि बनाएँ और प्रतिलिपि का नाम बदलें:

... / साइटों / डिफ़ॉल्ट / services.yml

कोड का यह भाग खोजें: cors.config: enable: false

और निम्नलिखित के साथ बदलें - cors.config: सक्षम: सच

कैशे साफ़ करें।


मैंने आपके उत्तर को देखने तक सब कुछ करने की कोशिश की, सबसे महत्वपूर्ण बिंदु दिखाने के लिए धन्यवाद, जो CACHE (CBHE) को पुनः प्रकाशित कर रहा है: D
emy

3

मेरे लिए निम्नलिखित सेटिंग काम कर रही है।

cors.config:
  enabled: true
  # Specify allowed headers, like 'x-allowed-header'.
  allowedHeaders: ['x-csrf-token','authorization','content-type','accept','origin','x-requested-with']
  # Specify allowed request methods, specify ['*'] to allow all possible ones.
  allowedMethods: ['*']
  # Configure requests allowed from specific origins.
  allowedOrigins: ['*']
  # Sets the Access-Control-Expose-Headers header.
  exposedHeaders: false
  # Sets the Access-Control-Max-Age header.
  maxAge: false
  # Sets the Access-Control-Allow-Credentials header.
  supportsCredentials: false

0

उजागरहेडर्स: सत्य मान्य नहीं है और इसका कारण होगा चेतावनी: निहित (): Asm89 \ Stack \ CorsService-> addActualRequestHeaders () (94 / लाइन / विक्रेता / asm89 / stack-cors / src / Asm89 / Stack / CorsService में पारित किए गए अमान्य तर्क)। php) # 0 /web/core/includes/bootstrap.inc(584) इसे https://developer.mozilla.org/en-US/docs/Web/ को देखने के लिए अनुमति देने वाले हेडर के साथ या तो गलत या एक सरणी होना चाहिए। HTTP / हेडर / पहुंच-नियंत्रण-बेनकाब-हेडर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.