专栏首页java 微风解决:The 'Access-Control-Allow-Origin' header contains multiple values'x

解决:The 'Access-Control-Allow-Origin' header contains multiple values'x

版权声明:这可是本菇凉辛辛苦苦原创的,转载请一定带上我家地址,不要忘记了哈 . https://blog.csdn.net/u011314442/article/details/90202569

跨域问题报错:

Access to XMLHttpRequest at 'http://xx.xx.xx.xx/getUser' from origin 
'http://ergouzi.fun' has been blocked by CORS policy: 
The 'Access-Control-Allow-Origin' header contains multiple values 
'http://ergouzi.fun, *, http://ergouzi.fun', but only one is allowed.

1. 为了解决跨域问题,我在服务端代码中加了个过滤器:

package gentle.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 解决跨域设置
 * (可把此设置放在 nginx 中,但只能设置一处)
 *
 * @author silence
 * @date 2018/12/11 15:19
 */

@WebFilter(filterName = "requestFilter", urlPatterns = {"/*"})
public class RequestFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        HttpServletResponse response = (HttpServletResponse) servletResponse;
        HttpServletRequest request = (HttpServletRequest) servletRequest;

        // 此处 setHeader、addHeader 方法都可用。但 addHeader时写多个会报错:“...,but only one is allowed”
        // response.setHeader("Access-Control-Allow-Origin", "*");
        response.addHeader("Access-Control-Allow-Origin", request.getHeader("origin"));
        // 解决预请求(发送2次请求),此问题也可在 nginx 中作相似设置解决。
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Cache-Control,Pragma,Content-Type,Token, Content-Type");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        String method = request.getMethod();
        if (method.equalsIgnoreCase("OPTIONS")) {
            servletResponse.getOutputStream().write("Success".getBytes("utf-8"));
        } else {
            filterChain.doFilter(servletRequest, servletResponse);
        }
    }

    @Override
    public void destroy() {

    }

}

2. 同时在 nginx 中也作了相关配置:

add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
add_header 'Access-Control-Allow-Headers' 'Content-Type';
...

3. 运行报错如题。

4. 解决:此错表示设置重复,只允许设置一种,去除多余设置,保留一种即可。选择第1点中方法,或者第2点中方法都可以。

----------------------------------------------------------------------------

跨域相关知识点解说: https://blog.csdn.net/jiangyu1013/article/details/84315748

PS 跨域问题解决也见文章 :解决跨域问题:No 'Access-Control-Allow-Origin' header is present on the requested resource.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一次INSERT查询的无逗号SQL注入漏洞构造利用($10k)

    本文分享的是作者在一次众测中的SQL报错型注入漏洞发现过程,有趣之处在于,在后续漏洞利用的构造中,如果在目标服务端数据库逻辑的INSERT查询中使用逗号(Com...

    FB客服
  • Outlook.com邮箱环境在iOS浏览器下的Stored XSS漏洞

    大家好,今天分享的writeup是关于outlook.live.com邮箱环境在iOS浏览器下的存储型XSS漏洞(Stored XSS),由于测试范围隶属微软漏...

    FB客服
  • SharePoint邮件通知服务中的XSS漏洞

    跨站脚本漏洞(XSS)近年来一直是 OWASP的Top 10 经典攻击方式,能在野外发现XSS漏洞也是相当不错的了,尤其是在一些知名的网络产品中。近期,美国Ta...

    FB客服
  • 使用SSRF泄漏云环境中的Metadata数据实现RCE

    本文我将向大家分享一个新的非常有意思的漏洞。利用该漏洞可以为我们泄漏云环境中的Metadata数据,并进一步的实现远程代码执行(RCE )。

    FB客服
  • ZMap扫描机制剖析

    随着企业内网的网络资产不断增加,对实时监控网络资产变化的要求不断提升。以 Nmap 为代表的一代端口扫描器的在扫描速率上已经无法满足日常需要。随之以 Zmap ...

    FB客服
  • FDsploit:文件包含路径回溯漏洞的挖掘枚举和利用

    FDsploit可自动化的为我们发现和利用本地/远程文件包含及目录遍历漏洞。如果发现了LFI漏洞,可以使用--lfishell选项来进行利用。目前,支持以下3种...

    FB客服
  • APT34组织成员信息和工具被挖出,黑客扬言还有后招

    网络安全世界,黑吃黑的情况并不少见。2017年,Shadow Brokers入侵了美国NSA下属黑客组织Equation Group,下载了大量工具在网上售卖,...

    FB客服
  • 疑似内鬼作案,Bithumb遭遇黑客攻击损失近两千万美元加密货币

    韩国加密货币交易所Bithumb承认在3月29日星期五再次遭到黑客攻击。这是该平台在过去三年中报告的第三起此类事件。

    FB客服
  • 新型Anatova恶意软件分析

    近期,我们发现了一种新型的勒索软件家族-Anatova。Anatova发现于一个私人的点对点(p2p)网络中,目前我们已经确保客户得到了有效的安全保护,并打算在...

    FB客服
  • 视频 | Web安全漏洞系列之直接对象引用漏洞IDOR

    PwnFunction是当前Youtube中受欢迎的安全课程,它结合了Hacker101 和 LiveOverflow两个频道特点,对Web应用技术相关的各种典...

    FB客服

扫码关注云+社区

领取腾讯云代金券