700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > html post 发送两次 JS发送跨域Post请求出现两次请求的解决办法

html post 发送两次 JS发送跨域Post请求出现两次请求的解决办法

时间:2022-04-02 03:34:10

相关推荐

html post 发送两次 JS发送跨域Post请求出现两次请求的解决办法

为什么 post 请求会出现两次请求?

跨域请求就会出源现这样的问题。

由于CORS(cross origin resource share)规范的存在,浏览器会首先发送知一次options嗅探,同时header带上origin,判断是否道有跨域请求权限,服务器响应access control allow origin的值,供浏览器与origin匹配,如果匹配则正式发送post请求。

所有跨域的js在提交post请求的时候,如果服务端设置了可跨域访问

public static function setCrossDomain()

{

header(‘Access-Control-Allow-Origin: *‘);

header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

header(‘Access-Control-Allow-Methods: GET, POST, PUT‘);

}

都会默认发送两次请求,第一次是预检请求,查询是否支持跨域,第二次才是真正的post提交。

JS中出现这个现象原因在于你发送了一个非简单请求。

简单请求与非简单请求:

* 请求方式:HEAD,GET,POST

* 请求头信息:

Accept

Accept-Language

Content-Language

Last-Event-ID

Content-Type 对应的值是以下三个中的任意一个

application/x-www-form-urlencoded

multipart/form-data

text/plain

只有同时满足以上两个条件时,才是简单请求,否则为非简单请求

解决方法:

由上面定义可以看出,把你的post提交改成get提交,就不会两次请求,或者将post的header改成application/x-www-form-urlencoded, multipart/form-data 或 text/plain中的一种

原文:/YangJonathan/p/12781620.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。