Set*_*Bro 10 javascript security ajax cors
我的主页上有一个表单,设置为通过XHR POST提交到URL https://mydomain.com/send_sms.
当我在Internet Explorer(http://mydomain.com)中访问主页的非SSL版本并提交表单时,没有任何反应.在Webkit控制台中,我收到一个有用的错误说明Origin http://mydomain.com is not allowed by Access-Control-Allow-Origin.
然而,在Firefox 13中,请求明确提交并返回a 200 OK,尽管响应正文为空.此外,服务器端操作(发送SMS)实际上是由Firefox请求触发的,而不是由其他浏览器触发的.
我一直认为同源策略甚至拒绝发送请求,但也许是浏览器从不允许的响应中接收数据?
任何人都知道这是否是Mozilla在实施(甚至可能是疏忽)方面的目的性差异?
首先,http://example.com两者的https://example.com起源不同。对于XHR 1 级,这意味着不允许跨域请求。
但是对于当前的XHR (Level 2)来说,当CORS支持时(服务器和客户端都支持!),跨域请求可以是
\n\n一个简单的跨域请求,如果
\n\nGET, HEAD, 或POST, 和Accept请求标头字段均不是、Accept-Language、Content-Language、 或Content-Type、 和以外的字段或者
需要预检的跨源请求,否则。
对于简单的跨域请求,允许浏览器发送请求。但是当收到响应时,需要检查服务器是否允许共享资源。这是检查Access-Control-Allow-Origin标头字段和其他响应标头字段的地方。Access-Control-*只有通过此检查,浏览器才允许脚本读取响应。
对于其他跨源请求,需要进行预检来与服务器协商在实际请求中允许发送哪些信息。此预检请求基本上是一个OPTIONS告诉服务器实际请求将包含什么内容的请求(请求方法和标头字段)。然后服务器可以决定是否允许这样的请求。
就您而言,观察到的行为可能有多种原因。我猜您的send_sms脚本只是不\xe2\x80\x99t支持 CORS 的服务器端部分。
\n| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |