web-dev-qa-db-ja.com

CORS問題 - PreflightMissingalloRiginHeader - Express GatewayとAxios

私はExpress Gateway + Axios(React)+ Expressを使用することをお勧めしますが、私はCors Erroを受けています、私はすでに多くのことをしましたが、何も働いていませんでした。

エラーはこれです: enter image description here

Cross-Origin Resource Sharing error: PreflightMissingAllowOriginHeader _

私のEXPRESSは次のようになります。

const corsOptions = {
    Origin: '*',
    methods: ['POST', 'GET', 'PATCH', 'DELETE'],
    allowedHeaders: ['Content-Type', 'Authorization']
}
app.use(cors(corsOptions)); _

私の EXPRESS-GATEWAY

http:
  port: 8080
admin:
  port: 9876
  Host: localhost
apiEndpoints:
  api:
    Host: "localhost"
    paths: 
      - '/api/B/*'
      - '/api/A/*'
serviceEndpoints:
  appname:
    urls: 
      - 'http://localhost:8000'
policies:
  - jwt
  - cors
  - expression
  - log
  - proxy
  - rate-limit
pipelines:
  default:
    apiEndpoints:
      - api
    policies:
      - cors:
          - action:
              Origin: ["*"]
              methods: [ "HEAD", "PUT", "PATCH", "POST", "GET", "DELETE" ]
              credentials: true
              allowedHeaders: ['Content-type','Authorization','Origin','Access-Control-Allow-Origin','Accept','Options','X-Requested-With']
      - jwt:
          - action:
              secretOrPublicKey: code
              checkCredentialExistence: false
      - proxy:
          - action:
              serviceEndpoint: appname
              changeOrigin: true _

私のAXIOS

const headers = {
  headers: {
    "Authorization": authToken,
    "Access-Control-Allow-Origin": "*",
    "Access-Control-Allow-Credentials": true
  },
}

axios.get(`${API_PRIVATE_URL}/user/profile`, {
  crossdomain: true
}, {
  withCredentials: true
}, headers) _

私はもう何をすべきかわかりません。誰かが私を助けますか?

私はすでにいくつかの投稿に行きましたが、何も働いていません。

編集:コントローラーのどちらにも行きませんでした。 edit2:Postmanで使用でき、それは期待どおりに機能しました...

7
Jota

Express/Express-Gatewayで許可されたメソッドのリストにある「削除」の後に「オプション」を追加します。

const corsOptions = {
    Origin: '*',
    methods: ['POST', 'GET', 'PATCH', 'DELETE', 'OPTIONS'],
    allowedHeaders: ['Content-Type', 'Authorization']
}
app.use(cors(corsOptions)); _
http:
  port: 8080
admin:
  port: 9876
  Host: localhost
apiEndpoints:
  api:
    Host: "localhost"
    paths: 
      - '/api/B/*'
      - '/api/A/*'
serviceEndpoints:
  appname:
    urls: 
      - 'http://localhost:8000'
policies:
  - jwt
  - cors
  - expression
  - log
  - proxy
  - rate-limit
pipelines:
  default:
    apiEndpoints:
      - api
    policies:
      - cors:
          - action:
              Origin: ["*"]
              methods: [ "HEAD", "PUT", "PATCH", "POST", "GET", "DELETE", "OPTIONS" ]
              credentials: true
              allowedHeaders: ['Content-type','Authorization','Origin','Access-Control-Allow-Origin','Accept','Options','X-Requested-With']
      - jwt:
          - action:
              secretOrPublicKey: code
              checkCredentialExistence: false
      - proxy:
          - action:
              serviceEndpoint: appname
              changeOrigin: true _
1
Chris Drifte