当前位置: 首页 > 面试题库 >

我想将角度为4的数据发送到javaservlet(跨域)

西门展
2023-03-14
问题内容

我想将角度为4的数据发送到Java Servlet,但由于未通过访问控制而无法发送。我想使用Java Servlet将数据插入db

这是我的代码前端: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);
   }

    }

backend: 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);

Thank You Very Much


问题答案:

您需要阅读CORS协议。不久前,我写了一篇关于实现CORS的博客 文章。它基于使用
Spring框架(特别是Spring Boot),而不是直接使用Servlet API,但是它确实对CORS的工作方式有相当广泛的解释。

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

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

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

如果未在对OPTIONS请求的响应中看到那些标头,则将收到HTTP错误,并显示类似“所请求的资源上没有’Access-Control-Allow- Origin’标头”和POST请求的信息。将不会。



 类似资料:
  • 有棱角的 代码在此处输入图像描述 Spring 错误2021-01-02 16:50:55.397 WARN 15076---[nio-8080-exec-1]。w、 s.m.s.DefaultHandlerExceptionResolver:已解决[org.springframework.web.method.annotation.MethodArgumentConversionNotSuppo

  • 我工作在一个角,实现应用程序 我的代码 component1.ts 我想将变量< code>this.param传递给component2 component1.html component2.ts 我不确定如何在组件2中获取此数据。我收到错误。找不到地图。有人可以帮我吗? 谢谢

  • 我在角度4项目中使用视频js来播放m3u8流。其中许多流都会出现Access-Control-Allow-Origin错误。 喜欢:http://5.202.183.253:8080/live/irib1.m3u8 他们工作在移动应用程序和Chrome发挥他的扩展

  • 嘿,伙计们,我是angular的新手,对JavaScript不是很熟练。这个设置很好地引入了json数据,但是,当我对对象中的某些属性进行更改时,它们会在我更改视图和重新加载控制器时重置。如有任何关于如何处理这一问题的帮助或指导,将不胜感激。

  • 我需要帮助在Angular 4中显示来自api的subscribe的输出。既然我写了数据,我该怎么做呢。数据数据,但它表示类型对象上不存在属性数据。如何在浏览器中输出?下面是我的代码和api图片

  • 问题内容: 我有一个在我和它是一个连接到。当我单击时,我想说“ 单击按钮”。 这可能吗? 我知道两个连接到同一对象的对象可以轻松地相互通信并相互发送数据。但是对象可以将数据发送到对象中吗 编写自己的程序并将其附加到程序上是更好的编程吗?然后,我可以简单地让两个片段相互发送数据。 抱歉,如果这不是StackOverflow的正确类型。我是新手,因此无法在此问题上找到清晰的解释。 提前致谢! 问题答案