长时间轮询可避免发送OPTIONS和GET组合[跨域]
Long-polling avoid sending OPTIONS and GET combined [Crossdomain]
我正在尝试完成对子域的长轮询调用。问题是我需要将请求从example.com
发送到子域(sub.example.com
)。
我正在使用以下代码:
$.ajax({
url: 'https://sub.example.com/sub',
cache: false,
headers: {
'If-None-Match': etag,
'If-Modified-Since': last_modified
},
success: function(data, status, headers) {
// success handler
},
error: function(headers, status, errorThrown) {
// error handler
}
});
同样,这段代码不是放在同一个域上的。它被放置在example.com
上。
这里的问题是,浏览器首先发送OPTIONS请求,如果服务器响应正常,它将继续发送GET请求(这正是我们想要的)。然而,我想尽量避免第一次OPTIONS请求。
我可以在服务器设置中更改什么吗?
不能选择使用数据类型"jsonp"
您的跨源请求是一个非简单跨源请求,因为您包含了非简单标头If-None-Match
和If-Modified-Since
。浏览器在发送实际请求之前,发送OPTIONS preflight请求以获得向跨源资源发送非简单标头的权限。
如果您不希望浏览器在跨原点请求期间发送OPTION预飞行,则必须删除任何使其不简单的组件,包括不简单的标头。飞行前请求是浏览器强加的要求,而不是服务器。服务器没有办法告诉浏览器它不在乎服务器是否使用飞行前请求,因为飞行前请求总是第一位的,所以服务器必须与服务器通信的第一个机会是对飞行前请求本身的响应。(显然,在这一点上,说它不需要飞行前请求已经太晚了。)
有关飞行前机制的更多信息,你可以阅读CORS上的HTML5 Rocks页面和我关于访问控制允许起源标题如何工作的回答中的"非简单请求"部分?
相关文章:
- 根据id将json数组组合为一个json数组
- 有没有一种方法可以防止img get请求使用css或js发生
- 接受不在列表中的值-引导组合框
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- CORS-重定向到第二个GET正在接收的页面
- 组合两个javascript函数
- Telerik rad组合框多列数据绑定
- 组合 2 个 JavaScript .scroll 函数
- jQuery Ajax GET请求工作不正常
- 如何将PHP get查询转换为Meteor's HTTP.get()
- 返回/从Twit's客户端.get
- 如何使用jquery组合两个数组
- AngularJS错误:提供程序必须从$get工厂方法返回值
- onChange不足以从Dojo组合框触发查询
- 如何在router.get()方法中传递url作为参数
- 使用Javascript/JQuery获取JSON GET数据
- 组合承诺和非承诺值
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 长时间轮询可避免发送OPTIONS和GET组合[跨域]
- POST和GET可以在一个输入类型中组合吗?