为了账号安全,请及时绑定邮箱和手机立即绑定

了解CORS

了解CORS

我一直在网上寻找有关CORS的信息,我想确认一下我用它做的是什么,实际上是什么。下面提到的是完全虚构的情况。我将以一个普通网站为例。假设我的html页面有一个采用文本字段名称的表单。提交后,它将表单数据发送到myPage.php。现在,内部发生的事情是,服务器将请求www.mydomain.com/mydirectory/myPage.php与文本字段一起发送到。现在,服务器看到请求是从相同的域/端口/协议中触发的(问题1。服务器如何知道所有这些详细信息。它从哪里提取所有这些详细信息?)但是,由于请求来自同一域,因此它将服务器php脚本并返回所需的内容。现在,为了便于讨论,假设我不想手动填充文本字段中的数据,而是想以编程方式进行操作。我要做的是,我用javascript创建一个html页面,并触发POST请求以及参数(即textField的值)。现在,由于我的请求并非来自任何域,因此服务器将忽略该服务。我得到跨域错误?同样,我也可以编写一个Java程序,该程序利用HTTPClient / Post请求并执行相同的操作。问题2:这是什么问题?现在,CORS为我们提供的是,服务器将说“任何人都可以访问myPage.php”。在enable cors.org中说对于简单的CORS请求,服务器仅需在响应中添加以下标头:Access-Control-Allow-Origin:*现在,客户端将如何处理此标头。在这种情况下,客户端仍然想调用服务器上的资源,对吗?应该由服务器来决定是否要接受或不接受,并相应地采取措施。问题3:将标头发送回客户端(已向服务器发出请求)有什么用?最后,我不明白的是,我正在为我的android应用构建一些RESTful服务。现在,说我有一个POST服务www.mydomain.com/rest/services/myPost。我已经在本地计算机上托管了这些服务的Tomcat服务器。在我的android应用中,我只是调用此服务,然后将结果取回(如果有的话)。在这种情况下,我到底在哪里使用CORS。这是否属于服务器调用的不同类别?如果是,那么如何。此外,我检查了“ 为Tomcat启用Cors”,它说我可以在动态Web项目的web.xml中添加一个过滤器,然后它将开始接受它。问题4:是什么使从我的android设备到我的webservices的呼叫启用?谢谢
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

对于问题3,您需要了解两个站点与客户端浏览器之间的关系。正如Krumia在回答中提到的那样,这更多是请求中三个参与者之间的约定。

我最近发布了一篇文章,其中详细介绍了CORS握手如何设计工作。


查看完整回答
反对 回复 2019-09-26
?
桃花长相依

TA贡献1860条经验 获得超8个赞

即使CORS来源不被认可,支持CORS的API是否应该执行请求?我已经看到了一个CORS的实现,其中始终执行请求,但是响应中的CORS标头只有在识别出Origin的情况下才由服务器设置。不确定这是否是好的设计?

查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 508 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信