我的 AngularJS 应用程序正在对我们的服务(由 Jetty 提供支持)执行许多 AJAX 请求。出于某种原因,仅某些用户会出现以下错误,并在被要求清除浏览器缓存时消失。这只发生在 Google Chrome 上。
我在 www.domain.com 上试图请求 api.domain.com。
XMLHttpRequest 无法加载http://api.domain.com/my-service。该请求被重定向到“ https://api.domain.com/my-service ”,这对于需要预检的跨域请求是不允许的。/我的当前页面
请注意,Chrome 正在尝试将服务从 HTTP 重定向到 HTTPS。我的网站可以通过 HTTP 或 HTTPS 访问
这是 chrome://net-internals/#events 输出:
1523417: URL_REQUEST
http://api.domain.com/my-service
Start Time: 2014-08-15 14:17:39.809
t=5984 [st= 0] +REQUEST_ALIVE [dt=26]
t=5984 [st= 0] +URL_REQUEST_DELEGATE [dt=0]
t=5984 [st= 0] DELEGATE_INFO [dt=0]
--> delegate_info = "extension AdBlock"
t=5984 [st= 0] DELEGATE_INFO [dt=0]
--> delegate_info = "extension AdBlock"
t=5984 [st= 0] -URL_REQUEST_DELEGATE
t=5984 [st= 0] +URL_REQUEST_START_JOB [dt=26]
--> load_flags = 143540480 (DO_NOT_SAVE_COOKIES | DO_NOT_SEND_AUTH_DATA | DO_NOT_SEND_COOKIES | ENABLE_LOAD_TIMING | MAYBE_USER_GESTURE | REPORT_RAW_HEADERS | VERIFY_EV_CERT)
--> method = "OPTIONS"
--> priority = "LOW"
--> url = "http://api.domain.com/my-service"
t=5984 [st= 0] URL_REQUEST_REDIRECT_JOB
--> reason = "HSTS"
t=5985 [st= 1] +URL_REQUEST_DELEGATE [dt=25]
t=5985 [st= 1] DELEGATE_INFO [dt=25]
--> delegate_info = "AsyncResourceHandler"
t=6010 [st=26] -URL_REQUEST_DELEGATE
t=6010 [st=26] CANCELLED
t=6010 [st=26] -URL_REQUEST_START_JOB
--> net_error = -3 (ERR_ABORTED)
t=6010 [st=26] URL_REQUEST_DELEGATE [dt=0]
t=6010 [st=26] -REQUEST_ALIVE
知道为什么 Chrome 会强制进行这样的重定向吗?我在网络选项卡中看不到任何错误,该请求没有返回任何内容。
更多信息:
这是正常工作的 Chrome 浏览器上的响应标头。
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:X-Requested-With, authorization, content-type, X-CSRF-Token
Access-Control-Allow-Methods:GET, POST, HEAD, PUT, OPTIONS
Access-Control-Allow-Origin:http://api.domain.com
Content-Length:0
Server:Jetty(8.y.z-SNAPSHOT)