Java 具有基本身份验证的Jersey cors不工作
我正在尝试在我的jersey web服务器中启用CORS。我读书。所以我创建了我的过滤器Java 具有基本身份验证的Jersey cors不工作,java,web-services,jersey,cors,Java,Web Services,Jersey,Cors,我正在尝试在我的jersey web服务器中启用CORS。我读书。所以我创建了我的过滤器 import java.io.IOException; import javax.ws.rs.container.ContainerRequestContext; import javax.ws.rs.container.ContainerResponseContext; import javax.ws.rs.container.ContainerResponseFilter; import javax.
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.Provider;
@Provider
public class CORSFilter implements ContainerResponseFilter {
@Override
public void filter(final ContainerRequestContext requestContext,
final ContainerResponseContext responseContext) throws IOException {
final MultivaluedMap<String, Object> headers = responseContext
.getHeaders();
headers.add("Access-Control-Allow-Origin", "*");
headers.add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
headers.add("Access-Control-Allow-Credentials", "true");
headers.add("Access-Control-Allow-Headers",
"X-Requested-With, Content-Type, X-Codingpedia, ");
}
}
当我运行这个js时,它会不断询问我的登录名和密码,即使我输入正确,也会返回401 unauthorized。解决它,我发现了。只是需要改变一下 数据类型:“jsonp” 到 数据类型:“json”
由于jsonp,忽略ajax请求头。BTW im使用ApacheShiro进行身份验证。当我通过postman测试Web服务时,我发送了基本的身份验证并开始工作,现在我通过浏览器上方的javascript发送,不断请求登录和通过。这是我的错误,因为数据库连接问题,它没有进行身份验证,我仍然不知道,在我通过jQuery请求后,为什么浏览器会一直请求登录名和密码。
$.ajax({
type: 'GET',
url: myURL,
crossDomain: true,
dataType: 'jsonp',
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data.statusText);
console.log(data.name);
},
headers: {
"Authorization": "Basic " + btoa('login:pass'),
"Accept": "application/json"
}
});