REST请求从应用程序工作,但不是从javascript

REST request from app works, but not from javascript

本文关键字:javascript 工作 请求 应用程序 REST      更新时间:2023-09-26

我正在构建一个应用程序,必须通过请求在远程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-CredentialsAccess-Control-Allow-HeadersAccess-Control-Allow-Methods

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