我试图在click事件上使用ajax调用servlet。从那个servlet我称之为google auth终点。我尝试将set头设置为我正在调用的servlet但是我无法摆脱这个错误
XMLHttpRequest无法加载 https://accounts.google.com/o/oauth2/auth?client_id=2536-a ... NID%20profile%20email&安培;状态= F1BFD3804&安培;显示弹出=。 No' Access-Control-Allow-Origin'标题出现在请求的上 资源。起源' http://localhost:8080'因此是不允许的 访问。
这是代码
$.ajax({
type: "GET",
url: "/url-for-servlet",
dataType: "jsonp",
contentType: 'application/json',
error: function (jqXHR, textStatus, errorThrown) {
console.log(jqXHR)
},
success: function (data) {
alert("yippy");
console.log(data);
}
});
在servlet上我添加了回复
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.addHeader("Access-Control-Max-Age", "3600");
response.addHeader("Access-Control-Allow-Headers", "x-requested-with");
知道我在这里缺少什么吗?谢谢你的帮助。
答案 0 :(得分:0)
这是一个标准的安全限制:JS无法向自己以外的域发出请求。因此,您在localhost
上有一个应用程序,在accounts.google.com
上调用应用程序的Ajax - 默认情况下不允许。
答案 1 :(得分:0)
AJAX通常不允许从中调用其他域API。它被称为CSRF攻击。您的解决方案是,将数据发布到服务器servlet并在后端(Servlet)中执行所需的操作。