来自 AmpersandJS 的跨域请求
Cross-origin request from AmpersandJS
有以下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).
知道如何避免这种情况吗?
我认为这里可能发生的是服务器没有发送正确的 headers。该模型不需要定义任何 CORS-related headers,因为在大多数情况下浏览器已经发送了适当的请求 headers。
如您在 CORS Headers overview 中所见,您在 ajaxConfig 中定义的 headers 是服务器需要在响应中发送的内容,以便您的 cross-origin 请求。
有以下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).
知道如何避免这种情况吗?
我认为这里可能发生的是服务器没有发送正确的 headers。该模型不需要定义任何 CORS-related headers,因为在大多数情况下浏览器已经发送了适当的请求 headers。
如您在 CORS Headers overview 中所见,您在 ajaxConfig 中定义的 headers 是服务器需要在响应中发送的内容,以便您的 cross-origin 请求。