看来CORS的飞行前没有';没有道理。这是个玩笑吗?
根据以下样本: 如果请求使用GET、HEAD或POST以外的方法。另外,如果发布 用于发送内容类型不是的请求数据 application/x-www-form-urlencoded、多部分/表单数据或text/plain, e、 g.如果POST请求使用 application/xml或text/xml,则请求是预引导的 因此,在下面的示例中,由于XML内容类型和自定义标题看来CORS的飞行前没有';没有道理。这是个玩笑吗?,cors,preflight,Cors,Preflight,根据以下样本: 如果请求使用GET、HEAD或POST以外的方法。另外,如果发布 用于发送内容类型不是的请求数据 application/x-www-form-urlencoded、多部分/表单数据或text/plain, e、 g.如果POST请求使用 application/xml或text/xml,则请求是预引导的 因此,在下面的示例中,由于XML内容类型和自定义标题X-PINGOTHER,所以执行预飞行: var invocation = new XMLHttpRequest(); va
X-PINGOTHER
,所以执行预飞行:
var invocation = new XMLHttpRequest();
var url = 'http://bar.other/resources/post-here/';
var body = '<?xml version="1.0"?><person><name>Arun</name></person>';
function callOtherDomain(){
if(invocation)
{
invocation.open('POST', url, true);
invocation.setRequestHeader('X-PINGOTHER', 'pingpong'); //<====
invocation.setRequestHeader('Content-Type', 'application/xml'); //<====
invocation.onreadystatechange = handler;
invocation.send(body);
}
}
var invocation=newXMLHttpRequest();
var url='1〕http://bar.other/resources/post-here/';
变量body='Arun';
函数callOtherDomain(){
如果(调用)
{
open('POST',url,true);
setRequestHeader('X-PINGOTHER','pingpong');/CORS几乎总是安全的
对于通过IP身份验证或
使用CORS的防火墙(不幸的是仍然比较常见)
协议不安全。(这就是为什么CORS协议必须
(这是虚构的。)
但是,否则使用以下标题是安全的:
访问控制允许来源:*
即使资源公开了基于cookie或
HTTP身份验证,使用上面的头将不会显示它
将与XMLHttpRequest等API共享资源,非常类似
已与curl和wget共享
因此,换句话说,如果资源不能从随机访问
使用上述curl和wget连接到web的设备
不包括标题。但是,如果可以访问,则为
这样做很好
因此,服务器不需要知道任何关于请求内容类型的信息,就可以知道如何响应选项请求。服务器只需要知道:被询问的URL是否只能通过基于IP的身份验证访问,或者在某些防火墙或intranet后访问?如果是,则应拒绝选项请求。如果不是,即如果可以通过公共internet使用诸如curl、wget、telnet或您最喜欢的HTTP库之类的工具访问资源,然后它应该允许选项请求。这样做只会使浏览器与其他工具具有相同的访问权限
然后,当后续POST请求传入时,服务器可以做出进一步的决定。例如,服务器可能希望拒绝具有错误内容类型的POST。但它总是希望这样做。它不希望只拒绝来自CORS浏览器的选项请求;相反,它应该拒绝来自任何来源的POST请求。
考虑浏览器的特殊性的原因如下:考虑一个内联网,它遵循一个特定的范围内的IP地址,即任何一个使用公司计算机的人,这是没有问题的:使用CURL的公司内部的人可以访问数据,而使用CURL的人则不能访问该数据。但是,考虑公司内部有人浏览某个恶意网站,如果EVILL使用XHR API访问,那么请求将来自特权IP地址,因为它是特权用户计算机上的浏览器进行请求。为了防止这些安全漏洞,CORS协议被发明,因此关于直接发送到的广告,浏览器首先会执行一个选项请求,对于该请求,整个浏览器可能只会说“不,您不能访问此”,然后该帖子就永远不会发生。)如果可能,请将您的代码作为文本而不是图像。@toasted_flakes OK,修复。很难获得,但似乎是正确的。我会花更多的时间在上面。谢谢。