【问题标题】:How to test CORS with Mule如何使用 Mule 测试 CORS
【发布时间】:2017-02-20 21:56:05
【问题描述】:
我正在使用 Anypoint Studio 6.1 和 Mule 3.8.1 并且有一个 mule RESTful 应用程序,我想阻止 CORS 请求被应用程序接受。
应用程序已设置为执行此操作,但证明此操作有效的最佳方法是什么?
从我目前阅读的内容来看,这些示例构建了自己的应用程序,我只想做一些事情,比如在 Postman 中发送配置为 CORS 请求的请求。我该怎么做?
谢谢
【问题讨论】:
标签:
testing
cors
mule
anypoint-studio
crossdomain-request.js
【解决方案1】:
我想阻止应用程序接受 CORS 请求。
我只想做一些事情,比如在 Postman 中发送一个配置为 CORS 请求的请求
您的意思是您只想阻止来自浏览器中运行的 Web 应用程序的跨域请求?
鉴于浏览器是唯一强制执行 CORS 限制的工具,并且它们仅针对来自实际 Web 应用程序中运行的代码的请求执行此操作,而不针对来自 Postman 等不受同源策略约束的扩展程序的请求Web 应用程序是——那么您将无法使用 CORS 来阻止来自 Postman 的请求或来自浏览器中未从 Web 应用程序运行的代码的请求。
应用程序已设置为执行此操作,但证明此操作有效的最佳方法是什么?
确认服务没有发送Access-Control-Allow-Origin 响应标头——除非它被明确配置为这样做,或者它是使用某些默认添加Access-Control-Allow-Origin 的服务器端编程环境/框架构建的,否则它永远不会发送.
但是,由于缺少Access-Control-Allow-Origin,浏览器是唯一真正阻止跨域请求的工具,因此您实际上只能在 Web 应用程序中测试阻止。
否则,您至少可以在浏览器之外进行测试,以查看请求发送到的服务器返回的响应标头。在这种情况下要做的主要事情是确保请求发送Origin 标头(如果请求包含Origin 标头,某些服务器仅发送Access-Control-Allow-Origin - 因为浏览器是唯一自动发送Origin 的工具.
因此,例如,使用curl,您会想要这样做:
curl -H "Origin: https://example.com" https://service.to.test/