我正在构建一个应用程序,必须通过请求在远程web服务中获取和设置数据。当我使用jQuery GET请求时,它工作得很好,我可以从服务请求数据而没有任何问题,但是当我使用PUT时,我得到一些错误:
OPTIONS http://myurl.com 501(不支持的方法('选项'))
OPTIONS http://myurl.com Access-Control-Allow-Origin不允许Origin为null。
我已经尝试了几乎所有的方法来让它工作,但它不会工作。我下载了一个名为REST控制台的chrome应用程序,它可以自定义REST请求。奇怪的是,我可以通过该应用程序与服务器交互,但不能通过我的javascript!
这是javascript:
$.ajax({
url: 'http://myurl.com',
type: 'PUT',
data: '<time>16:00</time>',
success: function(data) { alert(data); }
});
谁能告诉我这是怎么回事? 首先要确保从web服务器提供运行脚本的页面,而不是直接从文件系统提供。
我猜你在http://myurl.com
的服务是在一个不同的主机名的主机名,你的页面被服务?为了在这种情况下工作,你需要实现HTTP头来支持跨域资源共享。
你在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
。
当您的服务器响应PUT
请求时,您还需要添加具有相同值的相同头-显然内容也将包含在此响应中