Serverless 및 AWS에서 다른 CORS 문제가 발생합니다. PUT 메소드를 허용하도록 특별히 말해야 할 필요가있는 것 같지만이 코드가 어디 있는지는 잘 모르겠습니다. 내 람다 함수에 대한 다음과 같은 코드를 가지고 : 나는 점점 오전Serverless 및 PUT 명령의 CORS 문제
module.exports.update = (event, context, callback) => {
const timestamp = new Date().getTime();
const data = JSON.parse(event.body);
if (typeof event.pathParameters.timeoffgroupid !== 'string') {
console.error('Validation Failed');
callback(new Error('Couldn\'t update the todo item.'));
return;
}
const params = {
TableName: 'TimeOffGroup',
Key: {
timeoffgroupid: event.pathParameters.timeoffgroupid,
},
ExpressionAttributeValues: {
':timeOffGroup': data.timeOffGroup,
':timeOffGroupColor': data.timeOffGroupColor,
':dateModified': timestamp
},
UpdateExpression: 'SET timeOffGroup = :timeOffGroup, timeOffGroupColor = :timeOffGroupColor, dateModified = :dateModified',
ReturnValues: 'ALL_NEW',
};
dynamoDb.update(params, (error, result) => {
if (error) {
console.error(error);
callback(new Error('Couldn\'t update the todo item.'));
return;
}
const response = {
statusCode: 200,
body: JSON.stringify(result.Attributes),
headers: {
"Access-Control-Allow-Origin" : "*", // Required for CORS support to work
"Access-Control-Allow-Credentials" : true
}
};
callback(null, response);
});
};
오류 :
은 XMLHttpRequest https://pwqlomgq89.execute-api.us-east-1.amazonaws.com/dev/timeoffgroup/7d463800-0935-11e7-b618-4b1d72ddca8e?timeOffGroup=Holiday+edited를로드 할 수 없습니다. 요청한 리소스에 'Access-Control-Allow-Origin'헤더가 없습니다. 따라서 'http://localhost:9000'은 액세스가 허용되지 않습니다. 응답의 HTTP 상태 코드는 502입니다. angular.js : 14328 처리되지 않은 거부 가능성 : { "data": null, "status": -1, "config": { "method": "PUT", "transformRequest" [null], "transformResponse": [null], "jsonpCallbackParam": "콜백", "데이터": {}, "url": "https://pwqlomgq89.execute-api.us-east-1.amazonaws.com/dev/timeoffgroup/7d463800-0935-11e7-b618-4b1d72ddca8e", "params": { "timeOffGroup": "Holiday edited"} , "content-Type": "application/json; charset = utf-8"}}, "statusText": "헤더": { "Accept": "application/json, text/plain, /" "}
CORS가 작동하도록 서버리스 튜토리얼의 모든 호출을 따라했습니다. 하지만 그것은 얻을 수 있고 작동하도록 만드는 것 같지만 PUT 명령이 작동하지 않습니다. 크로스 도메인에서 PUT을 허용하도록 업데이트 명령을 설정해야하는 곳이 있습니까? 헤더 : 당신의 문제는 당신이 OPTIONS
동사를 처리하지 않는 것 같다
{
"Access-Control-Allow-Origin" : "*", // Required for CORS support to work
"Access-Control-Allow-Credentials" : true
}
당신이 특정 오류 메시지를 얻고있는 이유는 서버가 액세스 제어 - 허용 - 원산지를 추가하도록 구성되지 않은 단지 아마도 :
같은 것을 사용하여 핸들을 수정 서버 오류 응답에 대한 응답 헤더. 그 메시지가 나타내는 진짜 근본적인 문제는 서버 측에 502 오류가 있다는 것입니다. 이것은 CORS 구성과 관련이없는 다른 오류가 발생하고 있음을 나타내는 것처럼 보입니다. 따라서 서버 로그를 살펴보고 502 서버 장애를 일으키는 원인에 대한 자세한 정보를 얻고이를 수정할 수 있습니다. 그것은 약간의 문법 오류와 같은 간단한 것일 수 있습니다. – sideshowbarker
그래, "ValidationException : 유효하지 않은 UpdateExpression : 표현식에 사용 된 표현식 속성 값이 정의되지 않았으며, 속성 값 : : timeOffGroupColor"라고 말하는 서버 로그를 보았습니다. 지금 오타를 찾고 있습니다. . –
자바 스크립트에서 정의되지 않은 값이 함수에 전달되었습니다. 이 문제를 해결할 수 있습니다. 도움을 주신 모든 분들께 감사드립니다. –