当前位置: 首页 > 面试题库 >

使用AJAX进行PUT和DELETE时的403状态(禁止)

谭志用
2023-03-14
问题内容

我已经使用JAX-RS(Jersey 2.0)实现了一个小的REST
API,并且正在使用AJAX调用该API,GET和POST都可以正常工作,但是当我调用任何PUT或DELETE方法时,得到的只有以下内容错误信息:

加载资源失败:服务器的响应状态为403(禁止)

这是Java中 DELETE 方法的示例:

    @Path("/deleteSomething")
    @DELETE
    @Consumes("application/json")
    public void delete(String json) throws ParseException {
        JSONParser parser = new JSONParser();
        Object obj = parser.parse( json );
        JSONObject object=(JSONObject)obj;

        String id = (String) object.get("id");
        System.out.println("ID  :   " + id);
        //DO SOMETHING HERE
    }

这是使用AJAX的Javascript调用:

function deleteSomethingAjax() {
    $.ajax({
        url: API_URI + "/deleteSomething", //API_URI is the API's uri
        contentType : 'application/json',
        data: idToJSON(), // this function just returns a JSON obj {"id":"myID"}
        type:  'DELETE',
        success : function(data, textStatus, jqXHR) {
            alert( "Fine!" );
        },

        error : function(jqXHR, data, textStatus, errorThrown) {
            alert('WOOPS, something wrent wrong...');
        }
    });
}

任何帮助都感激不尽!!谢谢!!


问题答案:

这个问题与CORSFilter设置有关,我在 web.xml 文件中将其设置为错误。这是CORSFilter的一部分,在 web.xml
内进行了适当设置:

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
    <init-param>
        <param-name>cors.allowed.origins</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>cors.allowed.methods</param-name>
        <param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


 类似资料:
  • 问题内容: 我让库的其余部分完全正常工作,只是试图生成api键,并通过ajax执行时禁止抛出403。 我跟踪到REST_Controller下的_remap函数..好像我不正确地调用url一样? 工作流程: 他们注册一个帐户后,单击“生成密钥”后,将在site1.com上使用以下表格。 ajax呼叫: GitHub上的REST-SERVER:https : //github.com/philstu

  • 问题:Swagger UI openAPI的Get请求正在工作,而其他方法类型给出403错误。 屬地: 摇摆配置: 安全配置: 我们还尝试忽略这些路径:WebSecurity中的< code>/swagger-resources/**,/webjars/**,仍然不起作用。 Post请求错误消息403 原始编辑:进一步研究发现,这可能是由于nginx代理。在我的本地服务器上一切正常,但在其他托管在

  • 当我尝试使用< code>DELETE方法时,出现了< code>403 delete forbidden错误。 我正在使用spring mvc rest实现 我尝试在我的文件中添加一些xml标签,正如其他一些帖子中建议的那样 如下 但这对我不起作用。在SpringServlet中还有其他配置要做吗。xml或在web中。xml? 有人能帮我吗?

  • 在一个采访问题中,我被要求解释一种情况,即使用并发哈希图与使用哈希图相比是正确的方法。在板上有两列t1和t2(对应于thread1和thread2),我应该编写一系列操作(如,等)使用concurrenthashmap与hashmap将产生预期结果。 我试图用迭代器举一个例子,但这不是面试官想要的。他在为线程1和线程2寻找一系列的放和拿操作。他说假设我们从不迭代,我们只有放和拿操作。 我查看了SO

  • 我已经在这个问题上坚持了两天了,我在StackOverflow和Laracasts上寻找的所有解决方案都没有结果。 我将Laravel5.5与jQuery一起使用,并在Firefox中进行测试。 我的AJAX GET调用工作正常,但是,当我尝试在数据库中推入一个条目时,我得到一个403错误。 我的标头包含CSRF令牌: 为在我的控制器中调用的每个表创建模型: 这里是AJAX调用,它基本上检查我的Q

  • 问题内容: 我正在使用jQuery AJAX对Web服务进行查询。我的查询如下所示: 执行此操作时,我收到状态错误403。我不明白为什么我的通话导致状态代码为403。我控制着服务的安全性,并将其标记为完全开放。我知道密钥是有效的,因为我在另一个可以使用的电话中使用了它。这是有效的呼叫: 我知道这是两个不同的端点。但是我100%确信这不是服务器端身份验证或权限错误。再一次,一切在服务器端都是开放的。