测试跨域

时间:2024-03-23 17:52:57

目录:

1、什么是跨域

2、常见跨域场景

3、跨域处理办法

4、跨域自测方法

5、关于跨域的说明

https://howtodoinjava.com/spring5/webmvc/spring-mvc-cors-configuration/

正文

1、什么是跨域

跨源资源共享 简称CORS
CORS (Cross-origin resource sharing) allows a webpage to request additional resources into browser from other domains e.g. fonts, CSS or static images from CDN. CORS helps in serving web content from multiple domains into browsers who usually have the same-origin security policy.

都在说跨域,为什么postman能访问接口,而浏览器就不行呢?这里需要理解什么是跨域,跨域是指的当前资源访问其他资源时发起的http请求由于安全原因(由于同源策略,域名、协议。端口中只要有一个不同就不同源),浏览器限制了这些请求的正常访问,特别需要注意的是这些发生在浏览器中。而通过postman等工具调用接口时,只是简单的访问一个资源,并不存在资源的相互访问。

跨域并非一定要解决的问题,只有需要时才应该处理,无缘由的处理跨域等于随意破坏系统的安全性。

2、常见跨域场景

对于前后端分离的项目,前端往往会调用多个不同域名服务器下的资源,由于浏览器的安全策略,限制了这种资源访问方式,导致跨域问题发生。

3、跨域处理办法

根据springboot、springmvc等项目不同具体决绝。
常见有种方法:具体内容非本文重点,不做详述。

1》跨域过滤器

2》使用jsonp

4、跨域自测方法

1》首先构建跨域场景

修改hosts文件,给127.0.0.1 绑定多个不同的域名,如:
127.0.0.1 test.com
127.0.0.1 test1.com

这样,就可以通过test.com、test1.com以及localhost三个域名访问 自己的同一个工程了。

然后,首先在浏览器地址栏中直接访问自己工程的get方法

测试跨域

2》使用测试工具测试

tips:浏览器可以测跨域,方法很简单,打开一个网站(非https的网站)后F12打开【开发者工具】,在【Console】可以直接输入js代码测试:

其后再(浏览器同一个页面)F12打开【开发者工具】,在【Console】可以直接输入js代码测试:
var xhr = new XMLHttpRequest();
xhr.open(‘GET’, ‘http://test.com:8761/producer/get’);
xhr.send(null);
xhr.onload = function(e) {
var xhr = e.target;
console.log(xhr.responseText);
}

如下图:
回车,结果如下(当前未做跨域处理),如下图跨域错误
测试跨域

3》成功跨域测试

之后我们通过做了跨域处理的网关[localhost:8756]测试,可实现跨域正常访问
如下图:
其中地址栏使用test.com:8756作为域名访问
cosole控制台使用test1.com:8756作为域名访问

测试跨域