在使用 Postman 进行 API 测试时,通常不会遇到跨域问题,因为 Postman 是一个独立的客户端应用程序,不同于在浏览器中运行的 JavaScript 代码,它没有同源策略(SOP)的限制。跨域资源共享(CORS)限制是由现代 web 浏览器实施的安全功能,其目的是防止恶意网站的不当请求。
跨域问题的本质源自于浏览器的同源策略,这里是发生跨域请求时浏览器和服务器交互的简要过程:
- 浏览器会向请求头中添加 Origin 和 Host 字段,表示请求的来源站点和目标站点。
- 收到请求后,服务器会根据 Origin 和 Host 字段来判断请求是否存在跨域。
- 如果服务器允许跨域,它会在 HTTP 响应头中添加
Access-Control-Allow-Origin
字段。 - 如果不允许跨域,这个字段就不会被添加。
虽然在 Postman 中不会遇到跨域问题,但 Postman 中还是提供了一种便捷的方法来模拟和测试 CORS 请求,我们来看看它是怎么实现的。
1.Postman 新建请求
打开 Postman ,新建一个 HTTP 请求,然后选择请求方式(post、get 等),并填写请求路径、请求体等信息。
2.设置跨域字段
点击【Headers】选项,在里面填写 Origin 字段,然后填写需要跨域的地址,比如localhost:8080
,这个字段就是模拟了浏览器在跨源请求期间发送的 Origin 标头。
3.测试跨域请求
设置完毕后,点击 Postman 界面中的“发送”按钮即可发送请求并查看结果。检查响应标头中是否有与 CORS 相关的信息,例如“Access-Control-Allow-Origin”。确保后端服务器正确配置 CORS 以允许来自前端域的请求,无论跨域请求是否成功,返回的状态码都是 200,所以要确认跨域是否成功,需要检查响应头。
如果跨域请求不成功,响应将不包含与跨域相关的标头:
对于成功的跨域请求,响应将包含与跨域相关的标头:
比 Postman 更好用的工具:Apifox
在 Apifox 中进行跨域(CORS)测试更加方便快捷。
打开 Apifox 新建一个 HTTP 项目,然后在项目中新建一个接口,选择相应的请求方法,定义请求体(Body)的数据结构并保存接口。点击【Headers】选项,在里面填写 Origin 字段,然后填写需要跨域的地址。
设置完毕后保存,然后来到运行页,点击【发送】按钮发起请求,请求响应信息会在下面的【header】里显示,如果跨域成功,则会显示Access-Control-Allow-Origin
等信息。
总结
在使用 Postman 进行 API 测试时,通常无跨域问题,因其为独立客户端应用,不受同源策略(SOP)限制。跨域问题源于浏览器同源策略,Postman 提供了模拟 CORS 请求的便捷方法,通过设置 Origin 字段和测试跨域请求,可检查响应头中的Access-Control-Allow-Origin
等信息。推荐使用 Apifox,更便捷进行跨域测试,跨域成功的响应会包含相关标头,失败则不含,确保后端正确配置 CORS 以允许前端域请求。
知识扩展: