2016-07-28 15 views
0

kann nicht https XMLHttpRequest Anfragen machen - immer diese zurück:Nein "Access-Control-Allow-Origin-Header für HTTPS-Anfragen

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost:8443' is therefore not allowed access.

Wenn ich die URL mit www.google.com ersetzen, es ist in Ordnung, aber https://www.google.com macht das Gleiche.

Es funktioniert, wenn ich Postman/JaSON Chrome Erweiterungen verwende, also habe ich versucht open -a Google\ Chrome --args --disable-web-security, aber das hat auch nicht funktioniert.

+0

Der Server legt CORs nicht das JavaScript – epascarello

+1

Ich rate 'outlook.office365.com' ist nicht Ihre Domäne, und Sie können nicht Ursprung Ajax aus Sicherheitsgründen * (es sei denn, der ** Server ** sendet CORS Kopfzeilen) *. – adeneo

+0

@adeneo Ja, es ist gerade von 'localhost', aber muss noch eine Anfrage an' outlook.office365.com' senden, um Daten zu bekommen – Kristin

Antwort

0

Der Header "Access-Control-Allow-Origin" wird aus Sicherheitsgründen serverseitig gesetzt.

Wenn Sie den Zugriff auf den Server hat, konnte man nur tun:

header("Access-Control-Allow-Origin: *"); 

Dies ist aber aus offensichtlichen Gründen nicht sicher. Sie sollten immer so wenig externen Zugriff wie möglich zulassen.

Kürzlich hatte ich das gleiche Problem. Was ich getan habe, war, meinen eigenen Server zu verwenden, die Anfrage von dort an die API zu stellen und das Skript stattdessen die Anfrage an meinen Server senden zu lassen (von dem aus man den Zugriffskontrollheader setzen kann). Also, im Grunde, anstatt die Anfrage an die dritte Partei Client-Seite (von Javascript), machen Sie es serverseitig und dann erhalten Sie diese Daten von Ihrem Server über Javascript.