来自AmpersandJS的跨源请求

时间:2016-05-26 12:12:12

标签: javascript ajax cross-domain ampersand.js

有以下AmpersandJS模型

var AmpersandModel = require('ampersand-model');

module.exports = AmpersandModel.extend({
    urlRoot: 'http://0.0.0.0:4567/api/v1/people',
    props: {
        id: 'any',
        name: ['string', true, ''],
        wins: ['number', true, 0],
        draws: ['number', true, 0],
        looses: ['number', true, 0]
    },

    ajaxConfig: function () {
        return {
            headers: {
                'Access-Control-Allow-Origin': '*',
                'Access-Control-Allow-Methods': "GET, POST, PUT, DELETE, OPTIONS",
                'Access-Control-Allow-Headers': "accept, authorization, origin"
            },
            xhrFields: {
                'withCredentials': false
            }
        };
    }
});

在模型上调用'save'时,请求方法转换为OPTIONS并出现明显的错误

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://0.0.0.0:4567/api/v1/people. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

知道如何避免这种情况吗?

1 个答案:

答案 0 :(得分:1)

我认为这里可能发生的是服务器没有发送正确的标头。该模型不需要定义任何与CORS相关的标头,因为在大多数情况下浏览器已经发送了相应的请求标头。

正如您在CORS Headers overview所看到的,您在ajaxConfig中定义的标头是服务器需要在响应中发送的标头,以便允许您的跨源请求。