对飞行前请求的响应;t通过访问控制检查:否';访问控制允许来源';
本文关键字:访问控制 飞行前 请求 检查 响应 | 更新日期: 2023-09-27 18:29:01
这里我使用asp.net中的javarest Web服务,而在asp.net中调用服务,我使用ajax调用Web服务,下面是我使用的代码
$.ajax({
type: "POST",
url: 'http://localhost:9090/EmployeeService/employee/create',
data: { id: 4, first_name:"narayan", last_name:"phone", email:"phone", phone:4545454545 },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccessCall,
error: OnErrorCall
});
当我运行这个时,我得到错误说如下
XMLHttpRequest无法加载http://localhost:9090/EmployeeService/employee/create.对飞行前请求的响应未通过访问控制检查:请求的资源上不存在"access control Allow Origin"标头。原点'http://localhost:64992因此不允许访问。
我在谷歌上搜索了这个主题,发现了很多答案,说我必须为一个单独的请求添加一个自定义标头(或一组标头),并向我显示了以下代码
$.ajax({
url: 'foo/bar',
headers: { 'x-my-custom-header': 'some value' }
});
或
$.ajaxSetup({
headers: { 'x-my-custom-header': 'some value' }
});
// Sends your custom header
$.ajax({ url: 'foo/bar' });
// Overwrites the default header with a new header
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });
根据我的代码,这里我应该用什么来代替"x-some-other-header"answers"some-value"。这是解决这个错误的正确方法吗?或者其他解决方案是什么?。请告诉我,我是asp.net的新手。
您是否有意将请求提交到其他域?"localhost:"后面的应用程序端口往往会发生更改,除非您将其设置为静态端口。端口号似乎已更改为64992,而不是9090
我通过在服务器端提供跨域访问权限解决了这个问题。由于该服务是使用maven用java编写的,我通过在web.xml页面中添加这些过滤器来支持跨域
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
通过在web.xml中添加这些内容,我能够解决错误。