Post 对Luracast Restler API的跨域AJAX调用;把「;及;删除“;“发送”;选项";-为什么?

Post 对Luracast Restler API的跨域AJAX调用;把「;及;删除“;“发送”;选项";-为什么?,post,cross-domain,cors,put,restler,Post,Cross Domain,Cors,Put,Restler,我已经安装了Luracast的Restler API框架,除了跨域发送PUT或DELETE外,我在这方面都取得了惊人的成功。当所有服务器都在同一台服务器上时,下面的代码可以正常工作,但是当我跨域时,Firebug会显示PUT或GET作为选项,并且在服务器上找不到它。我对如何停止发送“选项”而不是放置或删除感到困惑 $.ajax({ url: url, type: 'PUT', data: "thename="+ $('#TheName').val(), succe

我已经安装了Luracast的Restler API框架,除了跨域发送PUT或DELETE外,我在这方面都取得了惊人的成功。当所有服务器都在同一台服务器上时,下面的代码可以正常工作,但是当我跨域时,Firebug会显示PUT或GET作为选项,并且在服务器上找不到它。我对如何停止发送“选项”而不是放置或删除感到困惑

$.ajax({
    url: url,
    type: 'PUT',
    data: "thename="+ $('#TheName').val(),
    success: function(xhr, status) {
        console.info(xhr);
    },
    error: function(xhr, status) {
        console.info(xhr.responseText);
    },
    complete: function(xhr, status) {
        $('#showResponse').val(xhr.responseText);
    }
});
对于其他线程,我已将以下内容添加到Restler输出中:

    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST, DELETE, PUT, OPTIONS');

您已经获得了正确的响应头,但您也必须让服务器使用这些头响应选项请求

这是一个跨源请求,需要进行一种称为预飞行的操作。在发出PUT或DELETE请求之前,浏览器会询问目标web服务器从另一个域的网页执行此操作是否安全。它要求使用选项方法。除非目标服务器表示可以,否则web浏览器永远不会发出PUT或DELETE请求。它必须预先发出请求,因为一旦发出PUT或DELETE,就太晚了,无法接受响应;敏感信息可能已经泄露

GET和POST有点复杂,因为有时浏览器会在没有事先询问的情况下确定它们是安全的,而其他时候浏览器也会进行飞行前检查。这取决于请求中是否使用了某些标头


这部电影有血淋淋的细节。底线是,除非目标web服务器支持OPTIONS方法,否则不允许网页上的代码发出这些请求,并且对OPTIONS方法的响应中包含了表明允许此类请求的标题。

这可能会有所帮助:好的,这是有意义的。从未有意处理过预处理,您是否碰巧有一个简单的示例,说明如何正确处理/实现第一个选项调用,以及可能的下一个PUT调用?我想我对如何设置目标web服务器以允许选项感到困惑(我只是将其添加到允许的选项中,但结果相同),然后识别/处理表示允许此类请求的响应。对不起,我对Luracast Restler API框架一无所知。它在Apache下运行吗?是的。它工作得非常好,我只是不能正确地理解Apache的一面。抱歉,我认为您必须弄清楚如何使其在特定的框架中运行。