Nik*_* So 5 ajax jquery xmlhttprequest
在你说另一个帖子(jQuery $ .ajax(),$ .post在Firefox中发送"OPTIONS"作为REQUEST_METHOD)之前,是的,它根本没有帮助,所以......
我正在使用Chrome开发最新版本,当我尝试将文件发送到这样的远程视频转换器服务的API时,它可以工作(一切都在coffeescript中)让我们调用此代码1:
json_string = getNewSignedParams()
xhr = new XMLHttpRequest
xhr.open('POST', some_url, true)
xhr.setRequestHeader("Cache-Control", "no-cache")
xhr.setRequestHeader("Content-Type", "application/octet-stream")
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")
xhr.setRequestHeader("X-File-Name", some_file.name || some_file.fileName)
xhr.setRequestHeader("X-Query-Params", json_string)
xhr.send some_file
Run Code Online (Sandbox Code Playgroud)
以上返回200并且正常工作.但是我在页面上有jQuery,所以我想我会使用它,所以我有上面这样的jQuery版本.让我们称这个代码为2:
$.ajax
url: some_url
type: 'post'
data: some_file
processData: false
beforeSend: (xhr) ->
xhr.setRequestHeader("Cache-Control", "no-cache")
xhr.setRequestHeader("Content-Type", "application/octet-stream")
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest")
xhr.setRequestHeader("X-File-Name", some_file.name || some_file.fileName)
xhr.setRequestHeader("X-Query-Params", json_string)
success: ->
console.log 'success'
Run Code Online (Sandbox Code Playgroud)
我得到400(错误请求),说http://127.0.0.1:3000Access-Control-Allow-Origin不允许使用Origin.
但是得到这个,如果我取消注释代码1并注释掉代码2并刷新页面并上传文件,这将成功,并注释掉代码1并取消注释代码2并刷新页面并上传文件,NOW代码2赢了扔掉400 Bad请求错误!
但是,如果我关闭整个浏览器,并加载使用代码2的页面,无论我尝试多少次,上传文件都会给我400错误.然后,如果我执行上一段描述的内容,代码2将起作用!
还有一件事,Chrome控制台中的网络日志表示我使用代码2发出的请求将"OPTIONS"作为请求方法.而在代码1中,请求方法是"POST"
有谁知道这里发生了什么?
| 归档时间: |
|
| 查看次数: |
2742 次 |
| 最近记录: |