Блокировка политики Cors в jquery AJAX вызовах API на серверной части джерси - PullRequest
0 голосов
/ 06 апреля 2020

Я разработал веб-приложение, используя Джерси и jsp. все вызовы API джерси работают как за исключением почтальона, но когда я делаю ajax вызов в jsp, он получает ошибку, как показано ниже

enter image description here

Я добавил фильтр cors в свой бэкэнд в своем CORSFilter. java

package com.telusko.demorest.Controllers;

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.ext.Provider;

@Provider
public class CORSFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext request,
            ContainerResponseContext response) throws IOException {
        response.getHeaders().add("Access-Control-Allow-Origin", "*");
        response.getHeaders().add("Access-Control-Allow-Headers",
                "origin, content-type, accept, authorization");
        response.getHeaders().add("Access-Control-Allow-Credentials", "true");
        response.getHeaders().add("Access-Control-Allow-Methods",
                "GET, POST, PUT, DELETE, OPTIONS, HEAD");
        System.out.println("jhjhjhbjh");
    }
}

вот мой фронтэнд Ajax call

 var $url="http://localhost:8080/demorest/webapi/aliens/alien/103";

    $.ajax({
        url: $url,
        contentType: 'application/json',
        headers: { 'Access-Control-Allow-Origin': '*' }, //add this line
        dataType: 'json',
        type: 'GET',                
        success: function (Data) {return false;
    }

это мой бэкэнд метод

@Path("aliens")
public class AlienController {

    AlienRepository repo=new AlienRepository();

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<AlienModel> getaliens() {
        return repo.getAliens();
    }
}

и добавил эти строки в сеть. xml тоже

<init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.telusko.demorest.CORSFilter</param-value>
</init-param>

Есть ли что-то, что я должен реализовать в моем интерфейсе, какие-либо предложения?

1 Ответ

0 голосов
/ 06 апреля 2020

Я только что понял, что я добавил заголовок контроля доступа в моем интерфейсе с вызовом ajax, так что это было проблемой, когда я удалил

headers: { 'Access-Control-Allow-Origin': '*' }

из моего интерфейса ajax работает отлично :)

...