我已经实现了一个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
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。