Я довольно новичок в dropwizard и guice. Когда я локально нажимаю на свой API из кода ajax, я получаю следующую ошибку в консоли моего браузера. В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Таким образом, Origin 'null' не имеет доступа.
После изучения ошибки многие люди предлагают добавить CrossORiginFilter в мой код dropwizard. это делается через env.addFilter Но я пытаюсь использовать Guice. вот мой основной класс
public static void main( String[] args ) throws Exception
{
new TListService().run( args );
}
@Override
public void initialize( Bootstrap<TListServiceConfiguration> bootstrap )
{
bootstrap.setName( "tlist" );
bootstrap.addBundle( GuiceBundle.< TListServiceConfiguration > newBuilder().addModule( new JpaPersistModule( this.getClass().getPackage().getName() ) ).setConfigClass( TListServiceConfiguration.class )
.enableAutoConfig( this.getClass().getPackage().getName() ).build() );
}
@Override
public void run( TListServiceConfiguration config, Environment env ) throws Exception
{
}
и вот мой код ajax:
$(document).ready(function() {
$('#btnSend').click(function(){
var apiUrl = $('#txtServer').val() + $("#selectApi").val();
console.log("URL: " + apiUrl);
var postData = JSON.parse($('#textData').val());
console.log(postData);
console.log(JSON.stringify(postData));
$.ajax({
url: apiUrl,
async: false,
type: 'POST',
dataType:"json",
contentType:"application/json; charset=UTF-8",
data: JSON.stringify(postData),
})
.done(function(data) {
console.log("success");
console.log(data);
})
.fail(function() {
console.error("Error");
})
.always(function() {
console.log("complete");
});
});
});