【问题标题】:Angular 9 front/corsheaders django 3 back - appending the CORS headers to the requestAngular 9 front/corsheaders django 3 back - 将 CORS 标头附加到请求中
【发布时间】:2020-07-10 03:00:44
【问题描述】:

在 Angular 9 中找到一种方法来正确配置前端应用程序并使用后端 REST Web 服务时遇到了问题。在具有静态 IP 的远程服务器上,我运行我的 Angular 开发服务器(我知道它仅用于开发目的,但我想先摆脱这个错误)

ng serve --host 0.0.0.0 --port 80

所以我可以从外面访问它。然后我的 django 应用程序也在开发服务器上

127.0.0.1:8000

在 angular service.ts 文件中我尝试注入标头

export class FlightService {

  httpOptions = { 
    headers: new HttpHeaders({
      'Access-Control-Request-Method':'GET',
      'Access-Control-Request-Headers':'origin, x-requested-with, accept'
    })
  };

  private endpoint = 'http://127.0.0.1:8000/services';

  constructor(private http: HttpClient) { }
  //GET All Services
  getAllServices(): Observable<any>{
    return this.http.get(this.endpoint, this.httpOptions)
  }
}

在我的 django 后端的 settings.py 中,我将 corsheaders 模块放在了顶部:

'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...

并允许所有主机(在尝试了许多使用白名单但均无效的事情之后:

CORS_ALLOW_CREDENTIALS = False 

CORS_ALLOW_METHODS = [
 #   'DELETE',
    'GET',
    'OPTIONS'
    #'PATCH',
    #'POST',
    #'PUT',
]


CORS_ALLOW_HEADERS = [
    'accept',
    'accept-encoding',
    'authorization',
    'content-type',
    'dnt',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    'x-forwarded-for'
]

但我总是失败。添加 httpOptions 后,我在浏览器中收到错误:

http.js:2403 拒绝设置不安全的标头“Access-Control-Request-Method”

还有:

拒绝设置不安全的标头“Access-Control-Request-Headers”

所以至少我知道 Angular 正在尝试附加它。

请帮忙,如何处理呢?我想问题出在客户端。我还尝试使用 Angular dev 的代理设置 Nginx,但也未能在 Nginx 配置上附加标头。

【问题讨论】:

    标签: django angular


    【解决方案1】:

    这些CORS头不是你设置的,如果浏览器检测到你正在尝试访问跨域资源,它会自动设置。

    【讨论】:

    • 那我怎样才能让它工作呢?如果我不设置它也不起作用。
    • 跨域请求被阻止:同源策略不允许读取 [url] 处的远程资源。
    • 我还在 Firefox 网络选项卡中看到第一次尝试由 xhr(发起程序)作为 OPTIONS 发送,返回的​​错误是 CORS 失败。在请求的标头中有类似 Referrer Policystrict-origin-when-cross-origin 的内容。您知道如何影响 OPTIONS 预检消息吗?
    猜你喜欢
    • 2016-03-24
    • 2023-03-29
    • 2016-09-28
    • 2014-01-17
    • 2015-03-15
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多