Ich benutze Aws APi Gateway und API-Gateway benutzerdefinierte Autorisierung. Der Code, den ich für api Gateway benutzerdefinierte authorizer haben, ist wie folgt:Kann nicht aws API Gateway über Ajax
console.log('Loading function');
exports.handler = (event, context, callback) => {
var token = event.authorizationToken;
// Call oauth provider, crack jwt token, etc.
// In this example, the token is treated as the status for simplicity.
switch (token.toLowerCase()) {
case 'allow':
callback(null, generatePolicy('user', 'Allow', event.methodArn));
break;
case 'deny':
callback(null, generatePolicy('user', 'Deny', event.methodArn));
break;
case 'unauthorized':
callback("Unauthorized"); // Return a 401 Unauthorized response
break;
default:
callback("Error: Invalid token");
}
};
var generatePolicy = function(principalId, effect, resource) {
var authResponse = {};
authResponse.principalId = principalId;
if (effect && resource) {
var policyDocument = {};
policyDocument.Version = '2012-10-17'; // default version
policyDocument.Statement = [];
var statementOne = {};
statementOne.Action = 'execute-api:Invoke'; // default action
statementOne.Effect = effect;
statementOne.Resource = resource;
policyDocument.Statement[0] = statementOne;
authResponse.policyDocument = policyDocument;
}
// Can optionally return a context object of your choosing.
authResponse.context = {};
authResponse.context.stringKey = "stringval";
authResponse.context.numberKey = 123;
authResponse.context.booleanKey = true;
return authResponse;
wie Sie sehen können, ist es nur ein einfaches Mock-up Beispiel in aws Website zur Verfügung gestellt. Dann habe ich meine Methode get in API-Gateway mit diesem Autorisierungsprogramm konfiguriert. Auch bei der Methodenausführung habe ich einen benutzerdefinierten headear namens authorizationToken hinzugefügt, der vom Autor verwendet wird.
Wenn ich der Postbote alles verwenden ist gut:
Allerdings, wenn ich versuche es über Ajax zu nennen wie folgt ich die folgende Fehlermeldung erhalten:
XMLHttpRequest cannot load https://590vv3bkda.execute-api.us-east-1.amazonaws.com/hamedstg/tjresource/story. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. The response had HTTP status code 401.
Hier ist meine Ajax call:
Auch ist es bemerkenswert, dass ich ena bluteten CORS auf der api in aws.
Kann jemand helfen?
Ersetzen Sie beim Zugriff auf Ihre Testseite entweder "lvh.me: 8080" oder "www.127.0.0.1.xip.ip: 8080" anstelle von "localhost: 8080", um festzustellen, ob dies einen Unterschied macht. –
@ Michael-sqlbot Wie kann ich diese Einrichtung in aws Api-Gateway tun? –