jQuery - 发送跨域PUT / DELETE请求

时间:2015-04-30 14:47:38

标签: jquery ajax rest http cors

我有2个子域: main.example.com api.example.com

两者都坐在同一台机器上。

我正在尝试将来自 main.example.com PUT / DELETE 请求发送到 api.example.com ,但它不会让我这样做。

响应标头,来自 api.example.com

Access-Control-Allow-Origin: http://main.example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS

请求的方式如下:

$.ajax({
    url: 'https://api.example.com/script.cgi',
    type: 'PUT',
    success: function(result) {
        // Do something with the result
    }
});

它给我一个错误: 阻止跨源请求:同源策略禁止在https://api.example.com/script.cgi读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。

我该如何解决这个问题?我浪费了一整天的努力来解决它,但没有成功。

P.S。在chrome和firefox中不起作用。

1 个答案:

答案 0 :(得分:1)

请务必在PUT响应的预检(OPTIONS)响应上添加CORS标头。

我测试了你的设置(仅Access-Control-Allow-OriginAccess-Control-Allow-Methods),一旦两个响应都有CORS标题,一切正常(如果我从PUT响应中删除它们,例如,我得到你的错误)。