我有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中不起作用。
答案 0 :(得分:1)
请务必在PUT响应的预检(OPTIONS)响应和上添加CORS标头。
我测试了你的设置(仅Access-Control-Allow-Origin
和Access-Control-Allow-Methods
),一旦两个响应都有CORS标题,一切正常(如果我从PUT响应中删除它们,例如,我得到你的错误)。