2016-11-10 1 views
0

Ich versuche, eine POST-Anfrage von meiner Website zu meinem Remote-Server senden, aber ich begegne einige CORS-Probleme.Request Header-Feld Access-Control-Request-Methoden ist nicht erlaubt von Access-Control-Erlaube-Header in Preflight-Antwort

Ich suchte im Internet, fand aber keine Lösung für mein spezifisches Problem. Das ist mein Ajax-Request params:

var params = { 
    url: url, 
    method: 'POST', 
    data: JSON.stringify(data), 
    contentType: 'json', 
    headers: { 
     'Access-Control-Request-Origin': '*', 
     'Access-Control-Request-Methods': 'POST' 
    } 

Auf der Back-End-Seite in das ist mein Code in Python:

@app.route(SETTINGS_NAMESPACE + '/<string:product_name>', methods=['POST', 'OPTIONS']) 
@graphs.time_method() 

def get_settings(product_name): 
    settings_data = helper.param_validate_and_extract(request, None, required=True, type=dict, post_data=True) 
    settings_data = json.dumps(settings_data) 
    response = self._get_settings(product_name, settings_data) 
    return output_json(response, requests.codes.ok, headers = { 
     'Access-Control-Allow-Origin': '*', 
     'Access-Control-Allow-Methods': 'POST' 
    }) 

ich einen Fehler auf meiner Konsole erhalten:

XMLHttpRequest kann nicht laden [http://path-to-my-server]. Anfrage-Header-Feld Access-Control-Request-Verfahren ist nicht erlaubt durch Access-Control-Allow-Header in Preflight Antwort

Ich habe bemerkt, dass ich 'Access-Control-Request-Headers' auch hinzufügen können, aber ich war nicht sicher, ob es notwendig und es verursacht mir mehr Probleme, also habe ich es entfernt.

Weiß jemand, wie man dieses Problem löst?

+2

Ihre Ajax-Anforderung nicht senden 'Zugriffs-Control' Header funktionieren sollte, nur der Server diese Header sendet. – adeneo

+0

Danke, es hat funktioniert. posten Sie es als Antwort und ich werde zustimmen –

Antwort

1

Ihre AJAX-Anfrage sollte keine Access-Control Header senden, nur der Server sendet diese Header, damit die Server den Satz von Ursprüngen beschreiben können, die diese Informationen mit einem Webbrowser lesen dürfen.

Die Richtlinie für denselben Ursprung gilt normalerweise nicht für externe Browser, daher muss der Server CORS-Header oder JSONP-Daten senden, wenn der Browser die Daten abrufen kann.

Der Browser sendet diese Header nicht an den Server, es muss nicht, es ist der Server, der entscheidet, ob die Daten für einen bestimmten Ursprung verfügbar sind.

Entfernen Sie die header Option aus dem params Objekt, und es sollte

Verwandte Themen