欢迎来到 GeneXus问答,任何有关GeneXus的技术问题都可以在这里提问,你将会收到社区其他成员的回答。

GeneXus生成的Rest WebService,如何实现跨域调用

0 投票

在GeneXus中写了一个webservice,调用也没有问题,但是现在通过其他系统的ajax来调的话,会报跨域资源访问的错误,怎么办?

错误描述:

已拦截跨源请求:同源策略禁止读取位于 http://*** 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。

最新提问 11月 9 分类:GeneXusWeb | 用户: bob.guo (3,690 分)

1个回答

0 投票

查阅相关CORS的资料,都会很明确的说明需要添加Access-Control-Allow-Origin,来支持跨域资源访问。

在Wiki上介绍OpenAPI的文档中,要求API需要被跨域访问以及如何设置,可以查看:

Documenting RestFul services #Requirements

同样的,我们也分.Net和Java环境分别说明一下:

.Net

在IIS管理器中,打开HTTP响应标头,添加两条数据:

Name:Access-Control-Allow-Headers  Value:Origin, X-Requested-With, Content-Type, Accept
Name:Access-Control-Allow-Origin     Value:*


Java

在web.xml中,添加如下filter:

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
  <init-param>
    <param-name>cors.allowed.origins</param-name>
    <param-value>*</param-value>
  </init-param>
  <init-param>
    <param-name>cors.allowed.headers</param-name>
    <param-value>Origin,X-Requested-With,Content-Type, Accept</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

最新回答 11月 9 用户: bob.guo (3,690 分)
...