Java 无法使用ajax调用servlet

Java 无法使用ajax调用servlet,java,ajax,servlets,Java,Ajax,Servlets,我试图使用ajax点击事件调用servlet。从这个servlet中,我调用GoogleAuthEndpoint。我尝试将头设置为我正在调用的servlet,但我无法消除此错误 无法加载XMLHttpRequest …nid%20配置文件%20电子邮件和状态=F1BFD3804&显示=弹出窗口。 请求的服务器上不存在“Access Control Allow Origin”标头 资源。因此,不允许使用源“” 进入 这是密码 $.ajax({ type: "GET"

我试图使用ajax点击事件调用servlet。从这个servlet中,我调用GoogleAuthEndpoint。我尝试将头设置为我正在调用的servlet,但我无法消除此错误

无法加载XMLHttpRequest …nid%20配置文件%20电子邮件和状态=F1BFD3804&显示=弹出窗口。 请求的服务器上不存在“Access Control Allow Origin”标头 资源。因此,不允许使用源“” 进入

这是密码

$.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");

你知道我在这里遗漏了什么吗?感谢您的帮助。

这是一个标准的安全限制:JS不能向自己的域以外的域发出请求。因此,您在
localhost
上有一个应用程序对
accounts.google.com
上的应用程序进行Ajax调用,这在默认情况下是不允许的


请参见

AJAX通常不允许从中调用其他域API。这被称为CSRF攻击。您的解决方案是,将数据发布到服务器servlet,并在后端(servlet)执行所需的操作。

这些标题需要由目标URL(accounts.google.com)设置。不能这样做应该已经意味着不允许您使用目标服务做这些事情。寻找不同的解决方案,通常基于他们自己的API文档。不过,您的问题很奇怪,因为错误不是由目前发布的代码引起的。也许你过于简化/省略了太多?