【问题标题】:Cors policy blocking in jquery AJAX API calls on jersey backend球衣后端 jquery AJAX API 调用中的 Cors 策略阻塞
【发布时间】:2020-07-18 08:03:53
【问题描述】:

我使用 jersey 和 jsp 开发了一个 webapp。所有球衣 API 调用都像在邮递员中一样工作,但是当我在 jsp 中进行 ajax 调用时,它会出现如下所示的错误

我在我的 CORSFilter.java 的后端添加了 cors 过滤器

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 调用

 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();
    }
}

并将这些行也添加到 web.xml 中

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

有什么我必须在我的前端实现的吗 有什么建议吗?

【问题讨论】:

    标签: jquery ajax api jersey cors


    【解决方案1】:

    我刚刚意识到我已经使用 ajax 调用在前端添加了一个访问控制标头,所以这就是我删除时的问题

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

    从我的前端 ajax 调用它完美地工作:)

    【讨论】:

      猜你喜欢
      • 2021-06-22
      • 1970-01-01
      • 2021-02-07
      • 2019-09-04
      • 2022-01-17
      • 2021-10-16
      • 2020-01-30
      • 2020-06-13
      • 2021-10-15
      相关资源
      最近更新 更多