我的代码
控制器
@RestController
public class DbController {
@Autowired
private IDAO conn;
@CrossOrigin
@GetMapping("/foo")
public List<Foo> getFoo() {
return conn.getFooFromDao();
}
}
刀
@Repository
public class DaoImpl implements IDAO {
@Autowired
private JdbcTemplate temp;
public List<Foo> getFooFromDao() {
List<Foo> data = new ArrayList<>();
String sql = "SELECT fooName FROM BigFoo ORDER BY fooName ASC;";
data.addAll(temp.query(sql, new BeanPropertyRowMapper(BigFoo.class)));
return data;
}
}
getFoo() {
return this.http.get("localhost:8080/foo");
}
我正在使用HttpClient
从导入{HttpClient}从“@angull/common/http”;
我还通过将URL复制粘贴到我的浏览器中来验证URL在该服务方法中是否有效。它确实会返回JSON,这省略了错误URL或错误的可能性。
把你的交叉原点放在控制器层本身
@RestController
@CrossOrigin(origins = "*")
public class DbController {
@Autowired
private IDAO conn;
@GetMapping("/foo")
public List<Foo> getFoo() {
return conn.getFooFromDao();
}
}
这是spring推荐的直接解决方案,您也可以定义一个过滤器,它将允许所有响应的来源交叉
@Component
public class SimpleCORSFilter implements Filter {
private final Logger log = LoggerFactory.getLogger(SimpleCORSFilter.class);
public SimpleCORSFilter() {
log.info("SimpleCORSFilter init");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) {}
@Override
public void destroy() {}
}
您还需要知道,您在代码快照中没有提到协议http或https,您还没有发送GET请求,当您开始订阅它时,该请求将被发送,如下所示
getFoo() {
return this.http.get("http://localhost:8080/foo");
}
getFoo().subscribe(resp -> { // your logic });
// or directly inside getFoo() like this
getFoo() {
return this.http.get("http://localhost:8080/foo")
.subscribe(resp -> { // your logic });
}
我正在开发dropwizard应用程序和js ui,以便与api交互。我需要加载json数据来更新视图,但在此之前,我必须在dropwizard中启用cors。我做了一些工作人员,但它似乎不起作用,因为dropwizard始终不返回任何内容。
问题内容: 我使用Flickr照片搜索API的JavaScript创建了一个演示。现在,我将其转换为AngularJs。我在互联网上搜索,发现下面的配置。 组态: 服务: 控制器: 问题答案: 你不知道 您请求的服务器必须实现CORS才能从您的网站访问权限中授予JavaScript。您的JavaScript无法授予自己访问其他网站的权限。
问题内容: 我正在尝试使用jquery提出跨源请求,但它一直被消息拒绝 XMLHttpRequest无法加载http:// …请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不能访问Origin…。 我正在使用flask,heroku和jquery 客户端代码如下所示: 在heroku方面,我正在使用flask,就像这样 问题答案: 当我部署到Heroku
我已经使用JavaScript为Flickr照片搜索API创建了一个演示。现在我把它转换成AngularJs。我在网上搜索了一下,找到了下面的配置。 配置: 服务: 控制器: 但是我仍然得到了同样的错误。以下是我尝试过的一些链接: XMLHttpRequest无法加载URL。访问控制不允许原点允许原点 http://goo.gl/JuS5B1
问题内容: 我正在尝试使用一些跨域的Web服务。当我停用chrome的网络安全功能时,它的运行状况良好。我希望它在没有此功能的情况下工作,因此我尝试添加cross- domain.xml,但仍然无法正常工作。当我进行更多搜索时,开始了解有关tomcat中启用CORS的信息。 来自 http://www.w3.org/wiki/CORS_Enabled 对于Apache,可以将Apache配置为使用
我正在从angular 7应用程序中点击对WCF服务endpoint的post请求。在本地主机上,点击转到WCF服务器,但当我在服务器上部署WCF应用程序时,方法405不允许Cors飞行前错误显示在我的控制台中。甚至在WCF应用程序中也启用了COR。 什么问题?请帮帮我。 提前谢谢。 在《邮递员》中,我们收到以下标题作为回应