栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

飞行前的响应具有无效的HTTP状态代码:401 angular

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

飞行前的响应具有无效的HTTP状态代码:401 angular

您在评论中提到,使用邮递员可以获得预期的答复。这是一个很好的起点。我怀疑通过

curl -i -X URL
终端使用curl命令还会返回正确的响应。

如果邮递员工作正常,您必须意识到以下事实:在发出请求之前,角度会发送另一个称为 飞行前 请求的请求,该请求会对服务器端的终结点进行最小限度的检查。

该请求是 OPTIONS 类型的请求。

首先,必须确保您的 dispatcherServlet 接受 OPTIONS
请求。您可以通过在

*.properties
配置文件中指定它来实现此目的,例如:

spring.mvc.dispatch-options-request=true

或通过配置

web.xml

<servlet>    <!--content eluded for clarity-->    <init-param>        <param-name>dispatchOptionsRequest</param-name>        <param-value>true</param-value>    </init-param></servlet>

将其配置为接受OPTIONS请求后,请创建一个

Filter.java
并配置CORS过滤器。

您可以通过以下示例进行指导:

public class CorsFilter implements Filter{@Overridepublic void doFilter(ServletRequest request, ServletResponse response,          FilterChain filterChain) throws IOException, ServletException {    if(response instanceof HttpServletResponse){        HttpServletResponse alteredResponse = ((HttpServletResponse)response);        addCorsHeader(alteredResponse);    }    filterChain.doFilter(request, response);}private void addCorsHeader(HttpServletResponse response){    //TODO: externalize the Allow-Origin    response.addHeader("Access-Control-Allow-Origin", "*");    response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, HEAD");    response.addHeader("Access-Control-Allow-Headers", "Authorization, X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept");    response.addHeader("Access-Control-Max-Age", "1728000");}@Overridepublic void destroy() {}@Overridepublic void init(FilterConfig filterConfig)throws ServletException{}}

最后,不要忘了将此过滤器

web.xml
与以下init-params一起添加。

<filter>    <filter-name>cors-filter</filter-name>    <filter-class>ai.surge.usrmngmtservice.util.cors.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,OPTIONS,PUT</param-value>    </init-param>    <init-param>        <param-name>cors.exposed.headers</param-name>        <param-value>Authorization,Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>    </init-param>    <!--<init-param>-->        <!--<param-name>cors.preflight.maxage</param-name>-->        <!--<param-value>1800</param-value>-->    <!--</init-param>--></filter>

您现在应该准备出发。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/670659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号