0

我正在构建一个应用程序,该应用程序必须通过请求在远程 Web 服务上获取和设置数据。当我使用 jQuery GET 请求时它工作正常,我可以毫无问题地从服务请求数据,但是当我使用 PUT 时,我得到了一些错误:

OPTIONS http://myurl.com 501(不支持的方法('OPTIONS'))

选项http://myurl.com Access-Control-Allow-Origin 不允许 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); }
});

谁能告诉我这里发生了什么?

4

1 回答 1

0

首先确保您从 Web 服务器而不是直接从文件系统提供运行脚本的页面。

我猜您的服务与http://myurl.com您的页面提供服务的主机名使用不同的主机名?要让它在这种情况下工作,您需要实现 HTTP 标头以支持Cross Origin Resource Sharing

您的服务http://myurl.com需要处理一个 HTTPOPTIONS请求,其响应应该是一组 HTTP 标头(没有内容),如下所示:

Access-Control-Allow-Origin: http://url-of-page-with-javascript/

或者,您还可以指定Access-Control-Allow-Credentials,Access-Control-Allow-HeadersAccess-Control-Allow-Methods。请参阅此处的完整规范

当您的服务器响应PUT请求时,您还需要添加具有相同值的相同标头 - 显然内容也将包含在此响应中。

于 2013-06-07T12:37:36.840 回答