Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在浏览器上发送ajax帖子?_Jquery_Ajax - Fatal编程技术网

Jquery 如何在浏览器上发送ajax帖子?

Jquery 如何在浏览器上发送ajax帖子?,jquery,ajax,Jquery,Ajax,我想通过浏览器上的jQueryAjax将视频上传到服务器。 这是我的要求: $.ajax({ type: "POST", enctype: 'multipart/form-data', url: uploadUrl, data: data, processData: false, cache: false, t

我想通过浏览器上的jQueryAjax将视频上传到服务器。 这是我的要求:

$.ajax({
            type: "POST",
            enctype: 'multipart/form-data',
            url: uploadUrl,
            data: data,
            processData: false,
            cache: false,
            timeout: 6000000,
            success: function (data) {
                console.log(data);
            },
            error: function (e) {
                console.log("ERROR : ", e);
            }
        });
    });
错误

访问位于“”的XMLHttpRequesthttps://www.server.com“起源”http://192.168.1.4:3000'已被CORS策略阻止:请求的资源上不存在'Access Control Allow Origin'标头

标题

概述:
请求URL
推荐人政策:交叉来源时严格来源

响应标题:
访问控制允许凭据:true
缓存控制:没有存储,没有缓存,必须重新验证
缓存控制:后检查=0,预检查=0
内容编码:gzip
内容类型:文本/普通;字符集=utf-8
日期:2021年6月1日星期二07:00:33 GMT
到期:1997年7月26日星期一格林尼治标准时间05:00:00
上次修改时间:2021年6月1日星期二07:00:33 GMT
pragma:无缓存
推荐人政策:交叉来源时严格来源
服务器:nginx
设置cookie:playiconhover\u 1=旧;路径=/
设置cookie:AFCN=16225308336672;expires=太阳,2031年6月1日07:00:33 GMT;最大年龄=315532800;路径=/;域=.server.com
设置cookie:PHPSESSID=APAf3-e162d2860b1219b0633755a88-302087;路径=/
设置cookie:PHPSESSID=APAf3-e162d2860b1219b0633755a88-302087;expires=周一,2021年8月30日07:00:33 GMT;最大年龄=7776000;路径=/
设置cookie:serverUid=84db2%2C302087;expires=2021年6月1日星期二11:00:33 GMT;最大年龄=14400岁;路径=/;域=.server.com
设置cookie:apr_lb_id=m6;路径=/;域=.server.com
传输编码:分块
变化:接受编码
x-content-type-options:nosniff
x-frame-options:SAMEORIGIN
x-powered-by:服务器框架/1.0.1
x-solr:0
x-solr-cnt:0
x-xss-protection:1;模式=块

请求头:
接受:/
接受编码:gzip,deflate,br
接受语言:en US,en;q=0.9
连接:保持活动状态
内容长度:1570763
内容类型:应用程序/x-www-form-urlencoded;字符集=UTF-8
主机
原产地
参考者
sec CHU:“不是品牌”;v=“99”,“铬”;v=“90”,“谷歌浏览器”;v=“90”
美国移动通信公司:0
秒取数目的地:空
秒取数模式:cors
Sec获取站点:跨站点
用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/90.0.4430.212 Safari/537.36

然后我添加了以下标题:

$.ajax({
            type: "POST",
            enctype: 'multipart/form-data',
            url: uploadUrl,
            data: data,
            processData: false,
            headers: {
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Headers': 'application/json',
                'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,OPTIONS',
                'Access-Control-Allow-Credentials': true,
            },
            cache: false,
            timeout: 6000000,
            success: function (data) {
                console.log(data);
            },
            error: function (e) {
                console.log("ERROR : ", e);
            }
        });
    });
错误

访问位于“”的XMLHttpRequesthttps://www.server.com“起源”http://192.168.1.4:3000'已被CORS策略阻止:对飞行前
请求的响应未通过访问控制检查:请求的资源上不存在'access control Allow Origin'标头

然后我测试了jsonp:

$.ajax({
            type: "POST",
            enctype: 'multipart/form-data',
            url: uploadUrl,
            data: data,
            processData: false,
            dataType: 'jsonp',
            cache: false,
            timeout: 6000000,
            success: function (data) {
                console.log(data);
            },
            error: function (e) {
                console.log("ERROR : ", e);
            }
        });
    });
}
和错误

jquery.min.js:2跨源读取阻塞(CORB)使用MIME类型text/plain阻塞跨源响应。有关更多详细信息,请参阅


如果您有权访问.htaccess文件,则添加
access Control Allow Origin:
可能有效。否则,他们通常会将其设置为访问控制允许来源:www.example.com


CORS的存在是有原因的,它阻止未经授权的人访问某些数据或将数据发送到某个地方。

以下是Mozilla的描述:
跨源资源共享(CORS)是一种基于HTTP头的机制,允许服务器指示浏览器应允许从中加载资源的任何其他源(域、方案或端口),而不是其自身的源。CORS还依赖一种机制,浏览器通过该机制向承载跨源资源的服务器发出“飞行前”请求,以检查服务器是否允许实际请求。在该预飞行中,浏览器发送指示HTTP方法的标头和将在实际请求中使用的标头。

跨源请求的一个示例:从https://domain-a.com 使用XMLHttpRequest请求https://domain-b.com/data.json.

出于安全原因,浏览器限制从脚本启动的跨源HTTP请求。例如,XMLHttpRequest和FetchAPI遵循相同的源策略。这意味着使用这些API的web应用程序只能从加载应用程序的同一来源请求资源,除非来自其他来源的响应包含正确的CORS头。

在这里阅读更多关于它的信息https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS


如果您搜索错误消息,您将找到大量关于如何修复这些CORS错误的资源。这些标题不适用于ajax部分。这些是服务器端的。还要注意,为CORS添加通配符是一个非常糟糕的主意。将其限制为您需要的域