<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 什么的?
这是浏览器发现了跨域但是没有拦截?
还是dalao 有意思...能说明白:
JS 提交时会得到其他域名的响应数据...所以会向其他域名请求是否允许当前域名得到其响应数据,所以会有跨域预检...也就是发出OPTIONS请求
而表单提交,相当于跳转到其他域名...当前域名下的JS代码等等无法获取到响应数据...这对于其他域名是安全的..。浏览器不会向其他域名发出OPTIONS请求...
额外的补充:
完了 沉了吧...
1
allenforrest 2019-09-05 15:46:25 +08:00
nginx 里设置了 head 吧
|
2
imhxc 2019-09-05 15:47:57 +08:00
表单提交会跨域?
|
3
Aruforce OP |
4
krixaar 2019-09-05 15:54:06 +08:00 1
提交表单算跨域,点个 a 标签是不是也得算跨域……
|
5
SakuraKuma 2019-09-05 15:55:04 +08:00
简单请求不会触发跨域。。
|
6
SEARCHINGFREE 2019-09-05 15:56:53 +08:00
#4 直白
|
7
owenliang 2019-09-05 15:58:42 +08:00 1
表单 submit 又不是 ajax,不涉及跨域检查。
|
8
zivyou 2019-09-05 16:00:10 +08:00
学习了!
|
9
EricXuu 2019-09-05 16:06:33 +08:00
估计是服务端程序有问题,返了 500 回来,然后浏览器检查到端口不一致就会在 console 里报 CROS。其实跟 CROS 没关系。。经常遇见,已经学会无视了
|
10
Aruforce OP @krixaar 只要 scheme domain port 有一个不一样就算
@SakuraKuma @owenliang 你们说的是 form 跨域提交不触发跨域检查,我问的是为什么不触发,第二个表单可把原来站点的的 cookie 带过去了... |
11
userdhf 2019-09-05 16:13:42 +08:00
前端只要地址、方式、参数对了,其他肯定都是后端的问题...
|
12
LeeSeoung 2019-09-05 16:15:45 +08:00 1
简单请求
* 请求方式: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 提示,不能正常获取数据。 |
13
krixaar 2019-09-05 16:20:31 +08:00
#10 “出于安全原因,浏览器限制 从脚本内发起的 跨源 HTTP 请求。” 大概因为不是从脚本内发起的,所以不触发?
Ref: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS |
14
SakuraKuma 2019-09-05 16:22:03 +08:00
@Aruforce 下面有人详细回答你了,如果还觉得不够,可以移步 https://www.w3.org/TR/cors/#resource-preflight-requests
|
15
BlackHole1 2019-09-05 16:26:35 +08:00
|
16
Biwood 2019-09-05 16:38:28 +08:00
|
17
DOLLOR 2019-09-05 16:57:00 +08:00 via Android
HTML 诞生于 1993 年,XMLHttpRequest 诞生于 2000 年左右,CORS 标准在 2006 年才提交草案。
你不能让 1993 年的团队,去参考 2006 年的标准呀😌 |
18
xfriday 2019-09-05 17:17:54 +08:00
了解下 csrf 攻击原理就知道了
|
19
zw1one 2019-09-06 09:04:23 +08:00
表单提交界面会跳转,界面跳转了就不算跨域了
|