我正在使用 Anypoint Studio 6.1 和 Mule 3.8.1,并且有一个 mule RESTful 应用程序,我想阻止应用程序接受 CORS 请求。
应用程序已设置为执行此操作,但证明此功能有效的最佳方法是什么?
根据我目前所读的内容,这些示例构建了自己的应用程序,我只想做一些事情,比如在 Postman 中发送一个配置为 CORS 请求的请求。我该怎么做?
谢谢
最佳答案
I want to stop CORS requests from being accepted by the application. I would just like to do something like send a request configured as a CORS request in Postman
您的意思是您只想阻止来自浏览器中运行的 Web 应用程序的跨域请求?
鉴于浏览器是唯一强制执行 CORS 限制的工具,并且它们仅针对来自实际 Web 应用程序中运行的代码的请求执行此操作,而不针对来自不受同源策略约束的扩展程序(例如 Postman)的请求Web 应用程序是 — 那么您将无法使用 CORS 来阻止来自 Postman 的请求或来自浏览器中未从 Web 应用程序运行的代码的请求。
The application has been setup to do this but what is the best way to prove this is working?
确认服务没有发送 Access-Control-Allow-Origin
响应 header ——它永远不会发送,除非它被明确配置为这样做或者它是使用某些服务器端构建的默认添加 Access-Control-Allow-Origin
的编程环境/框架。
但由于缺少 Access-Control-Allow-Origin
,浏览器是唯一真正会阻止跨源请求的工具,因此您实际上只能在 Web 中测试阻止应用程序。
否则,您至少可以在浏览器外部进行测试,以查看将请求发送到的服务器返回了哪些响应 header 。在这种情况下要做的主要事情是确保请求发送一个 Origin
header (一些服务器只发送 Access-Control-Allow-Origin
如果请求包含 Origin
header ——因为浏览器是唯一自动发送 Origin
的工具。
因此,以 curl
为例,您需要这样做:
curl -H "Origin: https://example.com" https://service.to.test/
关于testing - 如何使用 Mule 测试 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42354939/