当前位置: 首页 > 知识库问答 >
问题:

请求头字段access-control-allog-methods在预响应中不被access-control-allog-headers允许

孙斌
2023-03-14
const header=new Headers({'Content-Type':'application/x-www-form-urlencoded'});
header.append("Access-Control-Allow-Methods", "POST");
header.append("Access-Control-Allow-Headers","Access-Control-Allow-Origin");

return this.http.post('http://localhost:8080',home,{headers: header})
    .pipe(map((response: Response)=>{return response.json();}));
java prettyprint-override">@Provider
public class CORSResponseFilter implements ContainerResponseFilter {

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
            throws IOException {

        responseContext.getHeaders().add("Access-Control-Allow-Origin", "*");
        //headers.add("Access-Control-Allow-Origin", "http://podcastpedia.org"); podcastpedia.org       
        responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,PATCH,OPTIONS");          
        responseContext.getHeaders().add("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); 
    }

}

有人能帮我吗?

共有1个答案

桂高昂
2023-03-14

从前端代码httpheaders中删除access-control-allog-methodsaccess-control-allog-headers。这些头应该作为响应头从服务器发送(这就是您在CorsResponseFilter中所做的工作)。

未能加载http://localhost:8080/Request header字段access-control-allog-methods在飞行前响应中不被access-control-allog-headers允许

此错误表示服务器响应标头access-control-allog-headers没有在标头值中包含access-control-allog-methods(这是不应该的)。access-control-allog-headers的目的是告诉浏览器允许客户端向服务器发送哪些请求头。您可以在CorsResponseFilter中看到您允许哪些标头。access-control-allog-methods不是其中之一。

同时,还可以删除access-control-xx-xx响应标头中的所有access-control-allog-headers值。这些不是必需的。您是说客户机可以发送这些请求头,但它不应该这样做。

另见:

  • 查看此答案中的更新,以获得关于这些标头如何工作的很好解释(如果您感兴趣的话)。
 类似资料: