加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – Firefox不会在飞行前发送跨源资源共享?

发布时间:2020-12-16 02:48:31 所属栏目:百科 来源:网络整理
导读:我已经实现了一个Web应用程序,它利用CORS从另一台服务器收集 JSON数据.服务器在不同的子域上运行.一切似乎都正确实现,它与Chromium一起使用.以下是我的请求副本,来自Chromium. 我的问题是在Firefox(使用13.0.1测试)中,没有请求我的AJAX资源.不会发送预检请求
我已经实现了一个Web应用程序,它利用CORS从另一台服务器收集 JSON数据.服务器在不同的子域上运行.一切似乎都正确实现,它与Chromium一起使用.以下是我的请求副本,来自Chromium.

我的问题是在Firefox(使用13.0.1测试)中,没有请求我的AJAX资源.不会发送预检请求,也不会发出实际请求.相反,我从XMLHttpRequest.send()函数中得到此错误:

[21:40:27.546] uncaught exception: [Exception... "Access to restricted URI denied"  code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)"  location: "http://192.168.1.99:2502/static/mootools-core-1.4.5.js Line: 5398"]

我正在使用Mootools的Request.JSON对象,它设置了各种额外的标题,这意味着确实需要预检.但是,它永远不会被发送.

不幸的是,JSONP不是一个选项,因为数据是敏感的.

有谁有洞察问题可能是什么?
非常感谢.

来自Chromium的工作示例:

飞行前请求:

OPTIONS /api/resource HTTP/1.1
Host: dev0.mydomain.com
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://192.168.1.99:2502
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML,like Gecko) Ubuntu/12.04 Chromium/18.0.1025.151 Chrome/18.0.1025.151 Safari/535.19
Access-Control-Request-Headers: origin,x-request,x-requested-with,accept
Accept: */*
Referer: http://192.168.1.99:2502/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: [redacted]

飞行前响应:

HTTP/1.0 200 OK
Server: PasteWSGIServer/0.5 Python/2.7.3
Date: Fri,29 Jun 2012 01:43:37 GMT
Content-Length: 0
Access-Control-Allow-Headers: Cookie,Origin,X-Request,X-Requested-With,Accept
Access-Control-Max-Age: 1
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://192.168.1.99:2502
Access-Control-Allow-Methods: GET
Content-Type: text/html; charset=UTF-8

“真实”请求:

GET /api/resource HTTP/1.1
Host: dev0.mydomain.com
Connection: keep-alive
Origin: http://192.168.1.99:2502
X-Request: JSON
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML,like Gecko) Ubuntu/12.04 Chromium/18.0.1025.151 Chrome/18.0.1025.151 Safari/535.19
Accept: application/json
Referer: http://192.168.1.99:2502/
Accept-Encoding: gzip,*;q=0.3
Cookie: [redacted]

“真正的”回应:

HTTP/1.0 200 OK
Server: PasteWSGIServer/0.5 Python/2.7.3
Date: Fri,29 Jun 2012 01:43:37 GMT
Access-Control-Allow-Origin: http://192.168.1.99:2502
Content-Type: text/html; charset=UTF-8
Content-Length: 22
Access-Control-Allow-Credentials: true

解决方法

答案在对问题的评论中给出.由于我提供的HTTP身份验证用户名,Firefox没有发送请求.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读