CORS?

2019-09-05 15:42:44 +08:00
 Aruforce
<form action="/cus/test" method="post" enctype="application/x-www-form-urlencoded">
    <input type="text" name="tst" value="5da8e633-68a3-43a0-964a-2f2e37125d60">
    <input type="submit">
</form>
<form action="http://localhost/cus/test" method="post" enctype="application/x-www-form-urlencoded">
    <input type="text" name="tst" value="03221274-d8ad-48c1-9276-2f821ed2cfd2">
    <input type="submit">
</form>

当前访问http://localhost:8080/

在提交第二个表单的时候 也是跨域了吧 ?

但是浏览器为什么没有拦住?并未设置Access-Control-Allow-Origin这个 head ;

我 F12 看请求的时候 发现传了 8080 端口的 sessionId Origin 什么的?

这是浏览器发现了跨域但是没有拦截?

2669 次点击
所在节点    程序员
19 条回复
allenforrest
2019-09-05 15:46:25 +08:00
nginx 里设置了 head 吧
imhxc
2019-09-05 15:47:57 +08:00
表单提交会跨域?
Aruforce
2019-09-05 15:53:45 +08:00
@imhxc 只要 scheme domain port 有一个不一样就算跨域啊;
@allenforrest 并没有
krixaar
2019-09-05 15:54:06 +08:00
提交表单算跨域,点个 a 标签是不是也得算跨域……
SakuraKuma
2019-09-05 15:55:04 +08:00
简单请求不会触发跨域。。
SEARCHINGFREE
2019-09-05 15:56:53 +08:00
#4 直白
owenliang
2019-09-05 15:58:42 +08:00
表单 submit 又不是 ajax,不涉及跨域检查。
zivyou
2019-09-05 16:00:10 +08:00
学习了!
EricXuu
2019-09-05 16:06:33 +08:00
估计是服务端程序有问题,返了 500 回来,然后浏览器检查到端口不一致就会在 console 里报 CROS。其实跟 CROS 没关系。。经常遇见,已经学会无视了
Aruforce
2019-09-05 16:07:29 +08:00
@krixaar 只要 scheme domain port 有一个不一样就算
@SakuraKuma @owenliang 你们说的是 form 跨域提交不触发跨域检查,我问的是为什么不触发,第二个表单可把原来站点的的 cookie 带过去了...
userdhf
2019-09-05 16:13:42 +08:00
前端只要地址、方式、参数对了,其他肯定都是后端的问题...
LeeSeoung
2019-09-05 16:15:45 +08:00
简单请求

* 请求方式:HEAD,GET,POST
* 请求头信息:
Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type 对应的值是以下三个中的任意一个
application/x-www-form-urlencoded
multipart/form-data
text/plain

命中 POST 方式的 multipart/form-data。跨域的话状态码是正常的 但是 console 会有 cors 提示,不能正常获取数据。
krixaar
2019-09-05 16:20:31 +08:00
#10 “出于安全原因,浏览器限制 从脚本内发起的 跨源 HTTP 请求。” 大概因为不是从脚本内发起的,所以不触发?
Ref:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
SakuraKuma
2019-09-05 16:22:03 +08:00
@Aruforce 下面有人详细回答你了,如果还觉得不够,可以移步 https://www.w3.org/TR/cors/#resource-preflight-requests
BlackHole1
2019-09-05 16:26:35 +08:00
Biwood
2019-09-05 16:38:28 +08:00
应该不是简单请求的问题,就像 4 楼说的,form 表单中的 submit 操作本质上是通过浏览器的地址栏直接打开 action 中的地址,同时把数据带过去,而不是停留在当前页面请求 action 中的地址,所以就不存在跨域的概念,更像是一个页面跳转的过程。
也就是说,如果你在 a.com 域名下使用 ajax 的方式请求 b.com 的数据,这叫跨域。但你从 a.com 直接跳转到 b.com ,这就不是跨域了。
DOLLOR
2019-09-05 16:57:00 +08:00
HTML 诞生于 1993 年,XMLHttpRequest 诞生于 2000 年左右,CORS 标准在 2006 年才提交草案。

你不能让 1993 年的团队,去参考 2006 年的标准呀😌
xfriday
2019-09-05 17:17:54 +08:00
了解下 csrf 攻击原理就知道了
zw1one
2019-09-06 09:04:23 +08:00
表单提交界面会跳转,界面跳转了就不算跨域了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/598239

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX