ich wie ein Neuling fühle mich hier, aber ich versuche, eine einfache AJAX-Anforderung von einem Browser ausgeführt werden eine GCF zuzugreifen und Chrome berichtet:Access-Control-Allow-Origin arbeiten nicht Google Cloud Funktionen GCF
XMLHttpRequest kann https://us-central1-bustling-opus-830.cloudfunctions.net/Authenticate nicht laden. Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten -Ressource vorhanden. Herkunft 'https://beast.reachboarding.com.au' ist daher nicht Zugriff erlaubt.
Ich habe eine Funktion namens Authentifizieren bekommt (wie oben dargestellt), das ist ein Eimer mit genannt:
bustling-opus-830.appspot.com
Ich habe verwendet gsutil CORS, um die folgende JSON-Datei mit:
[{
"origin": ["https://beast.localdev.com.au","*"],
"responseHeader": ["Content-Type"],
"method": ["GET", "HEAD", "DELETE", "OPTIONS"],
"maxAgeSeconds": 3600
}]
Mit dem folgenden Befehl:
gsutil cors set cors.json gs://bustling-opus-830.appspot.com/
Und dann die folgende Ausgabe aus dem entsprechenden Befehl get erhalten:
gsutil cors get gs://bustling-opus-830.appspot.com/
[{"maxAgeSeconds": 3600, "method": ["GET", "HEAD", "DELETE", "OPTIONS"], "origin": ["https://beast.localdev.com.au", "*"], "responseHeader": ["Content-Type"]}]
ich das Standardbeispielcode verwenden, die zur Verfügung gestellt wird, wenn Sie eine neue Funktion erstellen, wie unten angegeben:
/**
* Responds to any HTTP request that can provide a "message" field in the body.
*
* @param {!Object} req Cloud Function request context.
* @param {!Object} res Cloud Function response context.
*/
exports.helloWorld = function helloWorld(req, res) {
// Example input: {"message": "Hello!"}
if (req.body.message === undefined) {
// This is an error case, as "message" is required.
res.status(200).send('No message defined!');
} else {
// Everything is okay.
console.log(req.body.message);
res.status(200).send(req.body.message);
}
};
Und eine einfache HTML mit dem folgenden Javascript:
$.ajax({
url: "https://us-central1-bustling-opus-830.cloudfunctions.net/Authenticate",
type: "POST",
data: {
message: 'Testing'
},
dataType: 'json',
success: function (response) {
console.log(response);
},
error: function (xhr, status) {
console.log(xhr);
}
});
Das verursacht den Fehler.
In meiner DEV-Konsole kann ich die Netzwerkanforderung durchlaufen sehen. Hier sind die HTTP-Response-Header Ich erhalte sind:
cache-control:private
content-encoding:gzip
content-length:27
content-type:text/html; charset=utf-8
date:Wed, 08 Feb 2017 03:45:50 GMT
etag:W/"7-274e639a"
function-execution-id:azc1zqfb1tq8
server:Google Frontend
status:200
vary:Accept-Encoding
x-cloud-trace-context:70e08d634a9644c32530326de0471a64;o=1
x-cloud-trace-context:70e08d634a9644c32530326de0471a64
x-powered-by:Express
Ich hätte erwartet, dass die Access-Control-Allow-Origin-Header innerhalb der Antwort-Header, um zu sehen, um anzuzeigen, dass es erlaubt *, aber ich bin auf jeden Fall ich sehe es nicht. obwohl
Das Verrückte ist, dass, wenn ich auf dem Netzwerk-Element suchen, und klicken Sie auf Antwort, die ich erhalten:
Testing
was darauf schließen lässt, dass alle Dinge gleich sind, es tatsächlich lief!
Ich entschuldige mich, wenn dies bereits beantwortet wurde, aber ich habe nach so vielen verschiedenen Keywords gesucht und nichts scheint mein Problem gelöst zu haben. Ich dachte, ein neues Paar Augen (und etwas anständiges Fachwissen) würde helfen.
Vielen Dank im Voraus!
Ist der richtige gsutil Befehl 'gsutil cors gesetzt cors.json gs: // busling-opus-830', oder Sie bereits sicher, dass' gsutil cors gesetzt cors.json gs: //bustling-opus-830.appspot. com/'sollte das gleiche erreichen? Ich frage, weil die Dokumente unter https://cloud.google.com/storage/docs/cross-origin#Configuring-CORS-on-a-Bucket einfach das unqualifizierte Formular 'gsutil cors set cors-json-file.json gs verwenden : // Beispiel' – sideshowbarker
Ich glaube, dass die beiden Befehle syntaktisch gleich sind. Der einzige Unterschied, den ich sehe, ist der Name der JSON-Datei. Ich habe cors.json benutzt, wo das Beispiel cors-json-file.json hat. Meinst Du das? – Encoder
Nein, ich meinte nur 'gs: // bustling-opus-830.appspot.com /' vs 'gs: // haste-opus-830' – sideshowbarker