为什么服务器没有使用 XMLHttpRequest 发送 PUT 方法
Why isn't PUT method sent using XMLHttpRequest received by the server?
我正在使用Jersey和tomcat编写我的第一个Web服务。我想使用 PUT 方法使用 javascript 从网页上传文件。我注意到的是我的服务器没有收到 PUT 请求,而它似乎正在获取 GET 和 POST。这是我在服务器端的方法:
@PUT
@Path("myPut")
@Produces(MediaType.TEXT_PLAIN)
public String myPut() {
System.out.print("OK!");
return "OK!";
}
这是我在客户端编写的代码:
function myFunction() {
var client = new XMLHttpRequest();
client.open("PUT", "http://localhost:8080/.../myPut", false);
client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
client.send("test");
}
如果我只是简单地用 GET 或 POST 替换该方法(在客户端和服务器上),我会得到我的"OK!"字符串作为响应(并打印)。我也尝试了使用 curl,服务器似乎如我预期的那样回答:
curl -X PUT -v http://localhost:8080/.../myPut
* Adding handle: conn: 0xc2eee0
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0xc2eee0) send_pipe: 1, recv_pipe: 0
* About to connect() to localhost port 8080 (#0)
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> PUT /.../myPut HTTP/1.1
> User-Agent: curl/7.32.0
> Host: localhost:8080
> Accept: */*
>
< HTTP/1.1 200 OK
* Server Apache-Coyote/1.1 is not blacklisted
< Server: Apache-Coyote/1.1
< Content-Type: text/plain
< Content-Length: 3
< Date: Sat, 16 Nov 2013 17:45:36 GMT
<
* Connection #0 to host localhost left intact
OK!
我读了一点,似乎PUT应该同时适用于Firefox和Chrome,这意味着这是我做错了什么(例如,这里,PUT明确在列表中;而且从这里的第一个答案中我猜PUT应该可用)。有人能够纠正吗?
如果这种方式是完全错误/不可接受的,您能否建议另一种技术来执行此操作(上传本地文件,可能允许我显示进度条)?
问题是由同源策略引起的。从 Web 服务本身返回页面解决了该问题。否则,CORS将是一个可能的解决方案。
Tomcat 默认不支持 PUT
方法。您需要对其进行配置。看这里http://www.codereye.com/2010/12/configure-tomcat-to-accept-http-put.html?m=1
您可以使用名为"高级 Rest 客户端"的 chrome 扩展程序测试所有动词
相关文章:
- XMLHttpRequest未返回值-状态202
- XMLHttpRequest在移动设备上的chrome上不起作用
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- 检查xmlhttprequest问题的消息
- 主线程上的同步XMLHttpRequest已弃用
- 如何定期发出xmlhttprequest
- javascript第三个XMLHttpRequest被拒绝.但前两个是允许的
- 上传带有XMLHttprequest的文件-多部分/表单数据中缺少边界
- 对象#<XMLHttpRequest>没有方法'完成'
- 在XMLHttpRequest之后重新初始化jQuery
- 如何将GreaseMonkey中的XMLHttpRequest延迟到目标页面加载完成
- Javascript XMLHttpRequest——只有第一个POST请求有效
- XMLHttpRequest - difference between Chrome & Firefox
- IE上的新XMLHttpRequest()出现JS Ajax未指定错误
- 非常简单的XMLHttpRequest不起作用
- 如何使用XMLHttpRequest下载文件
- XMLHttpRequest在$.ajax工作的地方给出了CORS错误
- XMLHttpRequest.open()AJAX中的参数url
- XMLHTTPRequest脚本中没有internet连接和超时
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作