我正在构建一个必须通过请求在远程Web服务上获取和设置数据的应用程序。当我使用jQuery GET请求它工作正常,我可以从服务请求数据没有任何问题,但当我使用PUT我得到一些错误:
选项http://myurl.com 501(不支持的方法 ( '选项'))
选项http://myurl.com Access-Control-Allow-Origin不允许使用原点null。
我已经尝试了几乎所有工作,但它不起作用。我下载了一个名为REST Console的chrome应用程序,可以进行自定义REST请求。奇怪的是,我可以通过该应用程序与我的服务器进行交互,但不能通过我的javascript进行交互!
这是javascript:
$.ajax({
url: 'http://myurl.com',
type: 'PUT',
data: '<time>16:00</time>',
success: function(data) { alert(data); }
});
有人能告诉我这里发生了什么吗?
答案 0 :(得分:0)
首先确保您从Web服务器提供运行脚本的页面,而不是直接从文件系统提供。
我猜你在http://myurl.com
的服务与您的网页所服务的主机名的主机名不同?要在这种情况下工作,您需要实现HTTP标头以支持Cross Origin Resource Sharing。
http://myurl.com
处的服务需要处理HTTP OPTIONS
请求,其响应应该是一组HTTP标头(没有内容),如下所示:
Access-Control-Allow-Origin: http://url-of-page-with-javascript/
您也可以选择指定Access-Control-Allow-Credentials
,Access-Control-Allow-Headers
和Access-Control-Allow-Methods
。请参阅full specification here。
当您的服务器响应PUT
请求时,您还需要添加具有相同值的相同标头 - 显然此内容也将包含在此响应中。