我想将 Angular 4 的数据发送到 javaservlet (跨域)[重复]

2024-01-01

我想将数据从 Angular 4 发送到 java servlet,但无法发送,因为没有通过访问控制。我想用java servlet将数据插入数据库

这是我的代码 前端:data.service.ts

 import { Injectable } from '@angular/core';
 import { Http, Response } from '@angular/http';
 import { Headers, RequestOptions, ResponseOptions } from '@angular/http';
 import { Observable } from 'rxjs';
 import 'rxjs/add/operator/map';
 import 'rxjs/add/operator/toPromise';

 @Injectable()
 export class DataService {

 result: any;
 private url = '//localhost:8080/my-java-web/';
 constructor(private _http: Http) { }


 addBookWithPromise(user: object): Promise<object> {
  const headers = new Headers({ 'Content-Type': 'application/json', 
  "Access-Control-Allow-Origin": "*",
  "Access-Control-Allow-Methods":" GET, POST, OPTIONS",
  "Access-Control-Allow-Headers": "Content-Type",
  "Access-Control-Allow-Credentials": "true"});
  const options = new ResponseOptions({ headers: headers });
  return this._http.post(this.url + 'loginsuccess', user, 
   options).toPromise()
  .then(this.extractData)
  .catch(this.handleErrorPromise);
  }

  private extractData(res: Response) {
  const body = res.json();
   return body.data || {};
   }
   private handleErrorObservable (error: Response | any) {
    console.error(error.message || error);
   return Observable.throw(error.message || error);
   }
   private handleErrorPromise (error: Response | any) {
   console.error(error.message || error);
   return Promise.reject(error.message || error);
   }

    }

后端:java servlet

public class LoginSuccess extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    response.addHeader("Access-Control-Allow-Origin","*");
    response.addHeader("Access-Control-Allow-Methods"," GET, POST, OPTIONS");
    response.addHeader("Access-Control-Allow-Headers","Content-Type");
    response.addHeader("Access-Control-Allow-Credentials", "true");
    PrintWriter out = response.getWriter();

    String username = request.getParameter("username");
    String password = request.getParameter("password");



    System.out.println("Success" +username);

非常感谢


您需要阅读 CORS 协议。 我写了一个博客文章 http://chariotsolutions.com/blog/post/angular-2-spring-boot-jwt-cors_part1/不久前关于实施 CORS 的事情。它基于 Spring 框架(特别是 Spring Boot)的使用,而不是直接使用 Servlet API,但它确实对 CORS 的工作原理有相当广泛的解释。

您的具体问题是您只处理 POST。 CORS 协议涉及 Web 浏览器向您的服务器发出 OPTIONS 请求。

此 OPTIONS 请求必须在响应中返回 Access-Control-Allow-Origin 和相关标头。

如果浏览器在响应中看到这些标头,它将执行 POST。

如果在 OPTIONS 请求的响应中没有看到这些标头,您将收到 HTTP 错误,显示类似“请求的资源上不存在‘Access-Control-Allow-Origin’标头”以及 POST 请求不会被制作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我想将 Angular 4 的数据发送到 javaservlet (跨域)[重复] 的相关文章

随机推荐

  • 我应该在哪里放置要在 AngularJS 应用程序的组件/控制器之间使用的代码?

    它应该与应用程序模块关联吗 它应该是一个组件还是只是一个控制器 基本上我想要实现的是所有页面的通用布局 我可以在其中放置或删除其他组件 我的应用程序的结构大致如下 bower components core login login comp
  • 字体文件中的什么属性使程序决定模拟粗体?

    我正在寻找字体文件中的属性 来自 WPF 的System Windows Media Fonts Typeface or GlyphTypeface 或直接访问 ttf otf 文件 这将允许我确定 Windows 中的 Write Wor
  • 获取有关 YouTube 视频的信息

    我希望获取 YouTube 视频的标题和持续时间并将其显示在我的应用程序中 我想动态地执行此操作 因为会有多个视频并且它们会发生变化 我寻找过提供此信息的 URL 但没有找到 有谁知道如何做到这一点 您需要使用 Youtube API 有关
  • QtCreator:如何设置调试参数? [复制]

    这个问题在这里已经有答案了 在 QtCreator 中 我无法找到如何设置在调试模式下运行时传递给可执行文件的参数 在 QtCreator 2 6 2 中应该是 转到 调试 下名为 项目 的选项卡 现在你必须选择适合你的 Qt 版本的工具包
  • 为什么 joblib.Parallel() 比非并行计算花费更多时间? Parallel() 不应该比非并行计算运行得更快吗?

    A joblib https joblib readthedocs io en latest parallel html模块提供了一个简单的帮助程序类来使用多处理编写并行 for 循环 此代码使用列表理解来完成这项工作 import tim
  • 涉及多个表的一对一关系

    Say 我有3张桌子 User其中包含有关用户的基本信息 SectionA其中包含有关用户的更多信息 SectionB其中还包含有关用户的更多信息 只能有一个SectionA and SectionB每个用户的数据 我的想法是创建一个像这样
  • 如何使 Volley NetworkImageView 离线工作

    I use Volley NetworkImageView从互联网下载图像并显示在我的listview 现在我想做Volley NetworkImageView当没有可用网络时显示保存的图像 Volley已经缓存了图像URL作为关键 因为当
  • 在 R 中使用 sapply 绘制并排图

    我有以下代码 dat lt read table text Topic Project C10 C14 C03 C11 C16 C08 T1 P1 0 24 0 00 0 00 0 04 0 04 0 00 T2 P1 0 00 0 30
  • 基于逻辑快速 Segue

    我想在应用程序首次启动时根据 if 语句快速显示两个视图之一 我该怎么做 这就是逻辑 if signupconfirmed true have to show one view else have to show another view
  • 礼项分两行。第二行没有边距

    我目前正在处理一个无序列表 其中包含带有标语的列表项 我遇到了有关一个列表项的问题 该列表项足够长 可以占用两行 参见图片 我希望第二行与第一行对齐 这是我正在使用的 HTML 代码 我使用 fontAwesome 作为检查图像 ul wi
  • 如何使用Java代码检查客户端浏览器中是否启用了JavaScript

    任何人都可以帮助我尝试使用 Java 代码检查客户端浏览器中是否启用了 JavaScript 假设您正在编写一个 Java Web 应用程序 我成功使用的一项技术是让访问的第一个页面 通常是登录表单 在页面加载时写入会话 cookie 然后
  • Pinterest 关注者显示

    我该如何在 Wordpress 中显示我的 Pinterest 关注者 我试过this http business pinterest com widget builder do follow me button但它只显示让用户关注我的帐户
  • Node Webkit 应用程序:隐藏光标

    我正在全屏模式下使用 nodewebkit 开发我的网络应用程序 它必须与触摸屏显示器一起使用 我使用过 CSS 属性 html cursor none In NodeWebKit 的清单 https github com rogerwan
  • web.xml 中针对没有角色成员身份的经过身份验证的用户的安全约束

    我非常绝望 因为我认为一定有一个简单的解决方案来解决我的问题 但我正在寻找 无济于事 我在 Glassfish 3 1 1 中使用自定义领域 此自定义领域 实现 AppservPasswordLoginModuleInterface 从 H
  • 在 Windows 7 上使用 .NET 以编程方式创建/销毁网桥

    我正在尝试以编程方式在 Windows 7 上创建和销毁网桥 从技术上讲 我希望留在 Net 4 领域 PInvokes 很好 ofc 但使用 C 是一种选择 到目前为止我的研究表明 对于配置 netsh 命令是要去的路线 https st
  • Dojo 自定义构建由于缺少资源而出现浏览器错误

    我一直在努力学习基于 AMD 的 Dojo 构建系统 到目前为止 我还无法获得一个在浏览器 FF 中不会出现加载错误的情况下可用的构建 我对如何管理构建有疑问 我的构建配置文件有一个包部分 我在那里指定的内容似乎与写入目标目录的相同包目录直
  • 如何在没有 web.xml 的情况下实现 jaxrs 应用程序 [重复]

    这个问题在这里已经有答案了 我正在尝试部署一个非常简单的 jaxrs 应用程序 但没有 web xml 配置 但无法使其工作 我希望访问的 URL 是 serverandport appname rest welcomes hello 我想
  • 按文件中的列批量排序

    我想知道是否有可能按列对文本文件进行排序 例如 I have aux1 txt像这样的行 Name SecondName Grade 在外壳中我可以做到这一点 sort r k 3 aux1 它按第三列 等级 对文件进行排序 批量中 sor
  • 对列表中相同元素的索引进行分组的有效方法

    假设我有一个如下所示的列表 1 2 2 5 8 3 3 9 0 1 现在我想对相同元素的索引进行分组 因此结果应如下所示 0 9 1 2 3 4 5 6 7 8 我如何以有效的方式做到这一点 我尽量避免使用循环 因此任何使用 numpy p
  • 我想将 Angular 4 的数据发送到 javaservlet (跨域)[重复]

    这个问题在这里已经有答案了 我想将数据从 Angular 4 发送到 java servlet 但无法发送 因为没有通过访问控制 我想用java servlet将数据插入数据库 这是我的代码 前端 data service ts impor