की अनुमति दे रहा हूं इसलिए मुझे पता है कि वहाँ बहुत सी कोर पोस्ट हैं, और मैं उन्हें केवल जोड़ रहा हूं, लेकिन मुझे कोई जवाब नहीं मिल रहा है जो मेरी मदद करता है। तो मैं एक कोणीय 4 अनुप्रयोग का निर्माण कर रहा हूं जो मेरे PHP एपीआई पर निर्भर करता है। स्थानीय स्तर पर कार्य करना यह ठीक है, पल मैं इसे टॉस app.example.com
पर अनुप्रयोग के साथ डोमेन पर है, और api.example.com
पर एपीआई, मैं नहीं मेरा लॉगिन पिछले प्राप्त कर सकते हैं, क्योंकि मैं निम्नलिखित त्रुटि मिलती है:कोर: PHP: प्रीफलाइट अनुरोध का जवाब पास नहीं होता है। मैं मूल
XMLHttpRequest cannot load http://api.example.com/Account/Login . Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://app.example.com ' is therefore not allowed access.
मेरे php कोड इस तरह दिखता है:
$http_origin = $_SERVER['HTTP_ORIGIN'];
$allowed_domains = array(
'http://example.com',
'https://example.com',
'http://app.example.com',
'https://app.example.com',
'http://www.example.com',
'https://www.example.com'
);
if (in_array(strtolower($http_origin), $allowed_domains))
{
// header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Origin: $http_origin");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Authorization, Content-Type,Accept, Origin");
exit(0);
}
मेरे कोणीय पोस्ट इस तरह दिखता है:
public login(login: Login): Observable<LoginResponse> {
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
headers.append('Authorization', 'Basic ' + btoa(login.Username + ':' + login.Password));
return this.http.post(this.apiBaseUrl + '/Account/Login', "grant_type=client_credentials", { headers: headers })
.map(response => {
// code
});
}
अगर मैं डाकिया के माध्यम से अनुरोध है, जो CORS साथ परेशान नहीं करता है चलाने के लिए, मैं जीई टी:
{ "error": "invalid_client", "error_description": "Client credentials were not found in the headers or body" }
मैं '*
' के लिए मूल की स्थापना सिर्फ परीक्षण और देखते हैं कि यदि समस्या का मूल था, और यह अभी भी उसी तरह विफल रहता है की कोशिश की है।
संपादित बस नीचे जानकारी से अद्यतन करने। हेडर में बदलते आवरण का कोई प्रभाव नहीं पड़ा, और अगर उनके बयानों का कोई प्रभाव नहीं पड़ा तो कोड को खींच कर कोई प्रभाव नहीं पड़ा।
मैंने अपने स्थानीय ऐप पर जाने के लिए अपने लाइव ऐप को बताकर PHP को डीबग किया, और PHP उम्मीद के अनुसार काम कर रहा है। यह हेडर सेट कर रहा है और इसे प्रत्येक कथन में बना रहा है।
संपादित 2 ले मैं वास्तव में, इस पर कुछ मदद इस्तेमाल कर सकते हैं अगर किसी को किसी भी विचार है, मैं वास्तव में यह सराहनीय होगा।
संपादित ले 3 मैं अपने .htaccess बजाय मेरी php में सभी शीर्ष लेख सामान सेट करते हैं, यह मुझे के माध्यम से कर सकते हैं। हालांकि, अब मैं ऊपर सूचीबद्ध त्रुटि पर फंस गया हूं कि पोस्टमैन का उपयोग करते समय मुझे हमेशा मिलता है, हालांकि अब यह वास्तविक साइट का उपयोग करते समय है।
{"error":"invalid_client","error_description":"Client credentials were not found in the headers or body"}
मेरा जवाब हेडर तो
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:authorization, content-type, accept, origin
Access-Control-Allow-Methods:GET, POST, OPTIONS
Access-Control-Allow-Origin:*
मैं इसे * करने के लिए केवल अपने डोमेन से बदलाव करने जा रहे एक बार मैं यह काम कर रहा है की तरह हैं। लेकिन अभी के लिए मैं इसे * के रूप में छोड़ दूंगा।
मेरे शीर्षलेख अनुरोध के रूप में।
अगर ($ _SERVER ['REQUEST_METHOD'] == 'विकल्प') से कोड निकालें {और जांचें कि क्या हुआ। – MasoodUrRehman
क्या आप ब्राउज़र में नेटवर्क टैब का निरीक्षण करके सर्वर प्रतिक्रिया का स्नैप शॉट साझा कर सकते हैं? – MasoodUrRehman
डीबगर में प्रतिक्रिया टैब खाली है, लेकिन यहाँ है हेडर - प्रतिक्रिया: 'की अनुमति दें: पोस्ट, विकल्प प्राप्त, प्रमुख, ट्रेस कनेक्शन: जीवित-रखें सामग्री-लंबाई: 0 सामग्री प्रकार: पाठ/सादे तिथि: सूर्य, 11 जून 2017 02:41:43 GMT रखें-Alive: टाइमआउट = 30 सर्वर: अपाचे/2' अनुरोध: 'स्वीकार करें: */* Accept-Encoding: gzip, हवा निकालना स्वीकार्य भाषा: एन-यूएस, एन; क्यू = 0.8, सीए; क्यू = 0.6 एक्सेस-कंट्रोल-अनुरोध-हेडर: प्राधिकरण एक्सेस-कंट्रोल-अनुरोध-विधि: पोस्ट कनेक्शन: जीवित रहें होस्ट: एपीआई। परीक्षा ple.com उत्पत्ति: http: //app.example.com रेफरर: http: // app.example.com/login' – Nieminen