对飞行前请求的响应;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的新手。

对飞行前请求的响应;t通过访问控制检查:否';访问控制允许来源';

您是否有意将请求提交到其他域?"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中添加这些内容,我能够解决错误。