1
hlwjia 2019-04-01 01:58:33 +08:00 via iPhone
首先代码发请求是什么意思?新建 html 发请求又是什么意思?区别是什么?
然后出不一样的返回不是应该看看你请求发出去的是什么内容吗? 你光比人家返回来的内容干嘛? |
2
zhoufenfens 2019-04-01 02:34:36 +08:00 via Android
后端设置判断的条件不同。一个是具体域名,一个是星号
|
3
gbin 2019-04-01 07:29:49 +08:00 via Android 2
因为你的逻辑请求属于复杂请求,复杂请求跨域时会先发送 OPTIONS 预检请求,该请求没有内容返回,之前写过一篇类似博客,可以参考一下,https://0x400.com/2017-08-02-frontend-learn-about-cros.html
写作水平有限,文中有参考,可以直接看参考。 |
4
deepdark 2019-04-01 07:49:09 +08:00 via Android
这个 200 但是没有返回值的请求是 OPTIONS,相当于探路的
|
5
TomVista 2019-04-01 08:10:55 +08:00
post + json 的请求 是一个复杂请求,包含一个 options 一个 post,复杂请求的 allow-origin 必需指定域名,不能用*号.
|
6
xingwing 2019-04-01 08:47:54 +08:00
加这个试试:dataType:'json',
|
7
molvqingtai OP @hlwjia 可能是我描述不清楚,就是我同一段请求代码我写在逻辑里面的时候,收不到返回值,粘贴再控制台却可以发送,发送的字段当然相同
|
8
50infivedays 2019-04-01 09:19:02 +08:00
你没有理解跨域的原理
跨域是浏览器行为 ,你直接去请求根本不会触发跨域 当你在代码中的时候 浏览器才会真正的触发跨域,跨域的流程是先发 preflight 的 options 请求,这个请求没有业务意义,只是询问服务端是否允许跨域 之后如果浏览器觉得满足条件,才会发起真正的请求 |
9
molvqingtai OP 谢谢大家,我把自己 node 的响应头配置复制给菜鸡后端问题解决了
|
10
molvqingtai OP @50infivedays 我遇到的是 options 预检请求已通过,第二发出的请求没有返回值
|
11
xiaoxiuaoliang 2019-04-01 10:12:38 +08:00 via Android
@molvqingtai 所以根本原因是?
|
12
no1xsyzy 2019-04-01 12:20:01 +08:00
@xiaoxiuaoliang 无 CORS 头,应该是遭遇了不符合跨域导致的 downgrade,请求头被阉了。
|
13
50infivedays 2019-04-01 19:55:11 +08:00
@molvqingtai 这确实很奇怪。。。找到原因了吗
|