我正在使用带有Java Lambda后端的AWS API网关。 直到使用Angular 4的朋友试图发出请求之前,所有东西都是桃色的。他弟妹:阻止使用Lambda的CORS AWS(JAVA)
跨来源请求:同源策略不允许读 在URL的远程资源(原因:CORS头 “访问控制允许来源”缺失)。
我已经通过网关上启用CORS:
尽管这样的错误仍然存在。我应该修改什么?
谢谢。
Ian的评论: 我使用输出/输入流,所以我的输出,根据您的意见,我想下面,但仍然没有成功。有任何想法吗 ?
private void sendResponse(JSONObject body, int statusCode, OutputStream outputStream)
{
OutputStreamWriter writer;
JSONObject responseJson = new JSONObject();
JSONObject responseHeadersJson = new JSONObject();
responseHeadersJson.put("Access-Control-Allow-Origin","*");
responseHeadersJson.put("Access-Control-Allow-Headers","Content-Type");
responseJson.put("headers",responseHeadersJson);
responseJson.put("statusCode", statusCode);
responseJson.put("body", body.toJSONString());
try {
writer = new OutputStreamWriter(outputStream, "UTF-8");
writer.write(responseJson.toJSONString());
writer.close();
} catch (IOException e) {
System.out.println("Outputstream Error "+e);
}}
你可以验证标题'Access-Control-Allow-Origin'是否存在,并且完全等于你设置的'*'?我相信你应该使用https://www.getpostman.com/ –
进行测试。也可以在chrome网络面板中检查或执行curl请求并查看请求的响应头。此外,这不是角度特定的这是一个问题,JS在跨浏览器的浏览器中执行AJAX调用,浏览器在任何POST或GET请求之前自动执行OPTIONS请求以获取标题信息(如果它没有跨源标题设置然后请求被拒绝。 https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy – shaunhusain