【发布时间】:2010-06-29 21:29:24
【问题描述】:
由于某种原因,每当我使用 YUI 执行异步请求并将其指定为 GET 或 POST,并且请求是 HTTPS 时,实际请求都会通过 OPTIONS 请求方法来实现。
帮助!为什么要这样做?
附:我用 Prototype 尝试过这个,得到了同样的结果。
【问题讨论】:
标签: javascript https prototypejs request yui
由于某种原因,每当我使用 YUI 执行异步请求并将其指定为 GET 或 POST,并且请求是 HTTPS 时,实际请求都会通过 OPTIONS 请求方法来实现。
帮助!为什么要这样做?
附:我用 Prototype 尝试过这个,得到了同样的结果。
【问题讨论】:
标签: javascript https prototypejs request yui
我假设请求是从非安全 (http) 页面发出的。 (或者如果它是来自安全页面,那么域可能不同。)
对您的安全 (https) 资源的请求被视为跨源请求。要使 GET/POST 成功,源和目标完全限定域名必须完全相同相同以符合同源安全策略。
OPTIONS 请求本质上是 HTTP 握手,或 preflight 发生在客户端和目标资源之间,以确定客户端是否有权访问目标来自源头的资源。
Safari 和 Firefox 等现代网络浏览器已实施 W3C 跨源资源共享 draft 政策,因此当它失败时您会看到 OPTIONS 预检通信 - 可能存在某种与安全或网络相关的 JavaScript 错误。如果 OPTIONS 预检成功,则可以进行原始的 GET/POST。
我建议阅读:
【讨论】: