Как включить разрешение источника cors в Webhdfs - HDFS - Hadoop - Origin http://localhost:4200 не разрешено Access-Control-Allow-Origin - PullRequest
0 голосов
/ 11 октября 2018

Когда я пытаюсь получить доступ к Webhdfs из моего приложения Angular 6, я получаю сообщение об ошибке, показанное ниже.Мне кажется, что я пробовал почти все, включая изменение настроек в core-site.xml и hdfs-site.xml, к сожалению, без положительного результата.Очевидно, что, скорее всего, это необходимо для правильной настройки Hadoop.У кого-нибудь есть идеи, как можно решить эту проблему?

[Error] Origin http://localhost:4200 is not allowed by Access-Control-Allow-Origin.
[Error] XMLHttpRequest cannot load http://192.168.0.16:9870/webhdfs/v1/user/myuser/myfile.csv?op=CREATE&user.name=myuser&createflag=&createparent=true&overwrite=false due to access control checks.
[Error] Failed to load resource: Origin http://localhost:4200 is not allowed by Access-Control-Allow-Origin. (myfile.csv, line 0)

Ответы [ 3 ]

0 голосов
/ 16 января 2019

вы должны сконфигурировать hdfs-site.xml и добавить конфигурацию

<property>
    <name>dfs.permissions</name>
    <value>false</value>
    <description>If "true", enable permission checking in HDFS. If "false", permission checking is turned off, but all other behavior is unchanged. Switching from one parameter value to the other does not change the mode, owner or group of files or directories.</description>
</property>

0 голосов
/ 05 марта 2019

В core-site.xml добавьте это, если не там ...

<property>
  <name>hadoop.http.filter.initializers</name>
  <value>org.apache.hadoop.http.lib.StaticUserWebFilter,org.apache.hadoop.security.HttpCrossOriginFilterInitializer</value>
  <description>A comma separated list of class names. Each class in the list
  must extend org.apache.hadoop.http.FilterInitializer. The corresponding
  Filter will be initialized. Then, the Filter will be applied to all user
  facing jsp and servlet web pages.  The ordering of the list defines the
  ordering of the filters.</description>
</property>
<property>
<name>hadoop.http.cross-origin.enabled</name>
<value>true</value>
<description>Enables cross origin support for all web-services</description>
</property>
<property>
<name>hadoop.http.cross-origin.allowed-origins</name>
<value>*</value>
<description>Comma separated list of origins that are allowed, wildcards (*) and patterns allowed</description>
</property>
<property>
<name>hadoop.http.cross-origin.allowed-methods</name>
<value>GET,POST,HEAD,PUT,OPTIONS,DELETE</value>
<description>Comma separated list of methods that are allowed</description>
</property>
<property>
<name>hadoop.http.cross-origin.allowed-headers</name>
<value>X-Requested-With,Content-Type,Accept,Origin,WWW-Authenticate,Accept-Encoding,Transfer-Encoding</value>
<description>Comma separated list of headers that are allowed</description>
</property>
<property>
<name>hadoop.http.cross-origin.max-age</name>
<value>1800</value>
<description>Number of seconds a pre-flighted request can be cached</description>
</property>
0 голосов
/ 11 октября 2018

Из документов :

Чтобы включить поддержку нескольких источников (CORS), установите следующие параметры конфигурации:

Добавьте org.apache.hadoop.security.HttpCrossOriginFilterInitializer для hadoop.http.filter.initializers в core-site.xml.Вам также необходимо установить следующие свойства в core-site.xml -

hadoop.http.cross-origin.enabled = true

hadoop.http.cross-origin.allow-originins = *

hadoop.http.cross-origin.allowed-method = GET, POST, HEAD, DELETE, OPTIONS

hadoop.http.cross-origin.allowed-headers =X-Requested-With, Content-Type, Accept, Origin

hadoop.http.cross-origin.max-age = 1800

...