我正在探索骨干js,我的要求是将用户详细信息(如姓名,电子邮件ID等)发布到Web服务。但是当我运行应用程序时,我会收到错误,
在Chrome上,
XMLHttpRequest无法加载localhost:8080 / service / customer /。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点'localhost:8050'访问。
在Firefox上,
阻止跨源请求:同源策略禁止在localhost:8080 / service / customer /读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。)
来自两个浏览器的标题响应是
我已经在互联网上进行了研究并确定为CORS问题,但我很困惑,我需要在我的JS文件中添加任何代码配置以及放置这些代码的位置。如果有任何代码,我是否需要将代码放在单独的js文件中?
以下是我的验证js文件的代码片段,
var ValidationModel = Backbone.Model.extend({
urlRoot: 'http://localhost:8080/service/customer',
defaults: {
ID: '',
fname: '',
lname: '',
email: ''.....
myValidationModel.save(myValidationModel.attributes,
{
success: function(model, response, options){
console.log('Model Saved..');
console.log('ID: ' + myValidationModel.get('id'));
},
error: function(model, xhr, options){
console.log('Failed to save model');
}...
我真诚地请求你的朋友,因为我是新手,请你给我一个想法,指导,如何解决这个问题的建议,以及在哪里放置代码。如果你能把我链接到任何有用的文章,那将是一个很大的好处。
非常感谢你。
答案 0 :(得分:1)
这是服务器端问题。 This提供了如何在不同平台上启用CORS的很好的总结。
如果您因为在本地开发而感到困惑,请注意不同的PORT编号也会导致CORS错误。
例如,我在http://localhost:8080有一个服务器上运行了一个网站。我还有另一个网站http://localhost:8082,该网站使用8080上的服务,这会导致CORS问题。
客户端唯一需要注意的是,如果添加任何其他标头,则必须将服务器端的CORS配置为允许这些标头。例如,我添加了以下安全令牌,以便主干可以访问服务器端的模型数据:
$.ajaxSetup({
headers : {
"X-Auth-Token" : usercredentials.getAccessToken(),
}
});
这意味着服务器端的CORS必须允许标头X-Auth-Token
。如果您没有添加任何其他标题,那么通常您只需配置Origin
并允许相关方法GET
,POST
,PUT
等等。 。 。
在您的情况下,您似乎必须在服务器上配置CORS以允许来自POST
Origin
的{{1}}来电。客户端将自动添加此标头。服务器只需要允许它。