У меня проблема с CORS ..
Я создал REST API с SPRING на http://localhost:8080 и использовал этот API с простым сайтом JS на http://localhost, но после применения OAuth2 следующая ошибка начала беспокоить меня.
Доступ к XMLHttpRequest в «http://localhost:8080/oauth/token' из источника» http://localhost' заблокирован политикой CORS: Ответчтобы предполётный запрос не прошел проверку контроля доступа: у него нет статуса HTTP ok
Я мог получить доступ к API без проблем CORS до OAuth (с AJAX и POSTMAN), а после применения OAuth я могиспользовать API только на POSTMAN, но я не мог сделать то же самое с AJAX.
Мой код AJAX:
function pronta(){
var username = "postmain"; // yes, I wrote wrong
var password = "1234";
function make_base_auth(user, password) {
var tok = user + ':' + password;
var hash = btoa(tok);
return "Basic " + hash;
}
$.ajax
({
type: "POST",
url: "http://localhost:8080/oauth/token",
dataType: 'json',
data: {
'grant-type': 'password',
'username': 'Tiago',
'password': '123'
},
header:{'Authorization': make_base_auth(username, password)}, // I've tried on both manners. with header and with beforeSend
beforeSend: function (xhr){
xhr.setRequestHeader('Authorization', make_base_auth(username, password));
},
success: function (){
alert('done');
}
});
}
Мой фильтр CORS (в SPRING REST API)
@Component
public class SimpleCORSFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE, PATCH");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) {}
@Override
public void destroy() {}
}
Фильтр работал до OAuth
Некоторые идеи, что происходит?
Tks