跨域XHR很奇怪

时间:2013-04-01 23:52:37

标签: javascript xmlhttprequest cross-domain client-side

我已经陷入了无法解决的问题 大约一个月。您可以在此处查看示例页面:http://www.7ya.ru/travel/tours/

所以,问题是我们的小部件使用跨域XHR和 有些人有问题。 XHR请求失败。没有确切的要求。检查员 只是说“取消”。在OSX和Win上的FF,Opera和Chrome中出现此问题。

BUT!如果您尝试清理缓存(例如在Chrome中):

checkboxes in chrome private data controll

您将看到小部件开始像魅力一样工作。 此外,如果您尝试仅清理缓存,它将无法正常工作。

那么,在两个不同平台上的大多数浏览器中,是否有人有关于哪些数据可能会影响XHR请求的想法?

P.S。我一直在尝试使用“vanilla”XHR和jQuery版本,但它的工作方式相同。

P.S.S。代码(CoffeeScript):

  1. lt_jq - 本地jQuery版本($ .noConflict())
  2. @inspect - JSON.stringify()以及一些用于格式化的附加参数

  3. request = lt_jq.ajax({
        url       : method,
        dataType  : "json",
        data      : params,
        xhrFields : withCredentials:true
    })
    
    request.done (data)->
        @request_id = (data.request_id || null)
        callback?(data)
    
    request.fail =>
        console.log "Request failed [#{method}], #{@inspect(params)}"
    

    问题已关闭,评论中的详细信息

1 个答案:

答案 0 :(得分:0)

您使用的网络是使用缓存代理,还是从它的声音来看,您是否在网络上有防病毒或某种过滤器来过滤请求?

听起来文件正在缓存而没有正确的标题,因此CORS标题被切断了......

我建议你检查一下最简单的方法: 使用CHROME:

  1. 清除缓存,打开开发工具,然后查看请求 确实有效。确保请求和响应标头中包含CORS标头。
  2. 现在您已在缓存中找到该文件,请重新加载您的页面。检查它是否无效。
  3. 现在它不起作用,请转到chrome:// view-http-cache /查看单个缓存 条目,并查找该文件的请求。打开它。
  4. 检查缓存的文件是否包含CORS标头。
  5. 如果没有...确保代理/防病毒软件没有切断网络中的CORS标头,或尝试不同的解决方案