程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了CORS 无法使用 CORS 过滤器工作,其中客户端和服务器位于同一 url大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决CORS 无法使用 CORS 过滤器工作,其中客户端和服务器位于同一 url?

开发过程中遇到CORS 无法使用 CORS 过滤器工作,其中客户端和服务器位于同一 url的问题如何解决?下面主要结合日常开发的经验,给出你关于CORS 无法使用 CORS 过滤器工作,其中客户端和服务器位于同一 url的解决方法建议,希望对你解决CORS 无法使用 CORS 过滤器工作,其中客户端和服务器位于同一 url有所启发或帮助;

我正在尝试使用 CORS 过滤器实现客户端和服务器位于同一 URL 中的 CORS。 下面是我已经实现的代码

CORS 过滤器

package com.core.web.spring.cors;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.servletexception;
import javax.servlet.Servletrequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.httpServletrequest;
import javax.servlet.http.httpServletResponse;

public class CORSFilter implements Filter{

    @OverrIDe
    public voID doFilter(Servletrequest req,ServletResponse res,FilterChain chain)
            throws IOException,servletexception {
        httpServletResponse response = (httpServletResponsE) res;
        httpServletrequest request = (httpServletrequest) req;
        ((httpServletResponsE) res).addheader("Access-Control-Allow-Origin","http://192.168.0.103:1111");
        ((httpServletResponsE) res).addheader("Access-Control-Allow-Methods","GET,POST");
        ((httpServletResponsE) res).addheader("Access-Control-Max-Age","3600");
        if ("OPTIONS".equalsIgnoreCase(request.getmethod())) {
            response.setStatus(httpServletResponse.SC_OK);
        } else {
            chain.doFilter(req,res);
        }
        
    }

}

web.xml

<filter>
  <filter-name>cors</filter-name>
  <filter-class>com.core.web.spring.cors.CORSFilter</filter-class>
</filter>
  
<filter-mapPing>
  <filter-name>cors</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapPing>

我已将 Access-Control-Allow-Origin 设置为 http://192.168.0.103:1111。我正在将邮递员工具中的原点更改为 http://192.168.0.108:1111。但它不是阻止请求,而是执行它。我收到了成功的回复。

下面是请求头和响应头

请求标头

Accept: */*
Accept-EnCoding: gzip,deflate
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Connection: keep-alive
Content-Length: 1296
Content-Type: text/HTML; charset=UTF-8`enter code here`
Host: 192.168.0.103:1111
Origin: http://192.168.0.108:1111
Referer: http://192.168.0.103:1111/SampleTest/index.HTML
User-Agent: Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/91.0.4472.124 Safari/537.36
X-requested-With: XMLhttprequest

响应标题

Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET,POST
Access-Control-Allow-Origin: http://192.168.0.103:1111
Access-Control-Max-Age: 3600
Connection: keep-alive
Content-Length: 1210
Date: Sat,03 Jul 2021 06:11:55 GMT
Server: WildFly/11
Strict-Transport-Security: max-age=7776000; includeSubdomains
X-Content-Type-Options: nosniff
x-frame-options: SAMEORIGIN
X-Powered-By: Undertow/1

谁能帮我解决这个问题?

解决方法

Postman 不关心 SOP(同源策略),它是一个开发工具,而不是浏览器。

CORS(跨源资源共享)和 SOP(同源策略)是客户端决定是否强制执行的服务器端配置。

与客户相关

大多数浏览器确实强制执行它以防止与 CSRF 攻击相关的问题。 大多数开发工具都不关心它。 Postman 作为开发工具不会太重视 CORS 标头,您将需要其他东西来测试。

有一些 chrome 扩展程序可以帮助您在浏览器上测试 CORS。

大佬总结

以上是大佬教程为你收集整理的CORS 无法使用 CORS 过滤器工作,其中客户端和服务器位于同一 url全部内容,希望文章能够帮你解决CORS 无法使用 CORS 过滤器工作,其中客户端和服务器位于同一 url所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。