摩訶不思議な現象が起きて困っております。
フロントエンドを通常のjqueryを入れたHTML(localhost)、バックエンドをPythonのFlask(レンタルサーバ)を使ってデータのやりとりをしています。HTMLからPost通信でバックエンドのAPIを叩くのですが、クエリパラメータで一定の文字数以上を渡した時にのみCorsエラーが発生します。
log
1Access to XMLHttpRequest at 'http://api.myDomain.com/test/' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
不思議なのは一定以上の文字列を渡した時にのみ発生することです
フロントエンドからは下記でAPIを叩いています。
なお、#input_messageはtextareaでとったユーザーの入力文字列です。
javascript
1function main(){ 2 3 console.log(123); 4 let input_message = document.getElementById("input_message").value; 5 $.post( 'http://api.myDomain/test/', 'queryA='+input_message ) 6 .done(function( data ) { 7 console.log( data ); 8 data = JSON.parse(data) 9 document.getElementById("output_message").value = data; 10 }) 11
この時、渡すデータの文字数が100文字程度以上だとエラーが発生するのですが、それ以下だと発生しません。エラーメッセージは下記です。
log
1Access to XMLHttpRequest at 'http://api.myDomain.com/test/' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
なのでバックエンド側でCors設定していないようなメッセージですが、短いデータを渡すと処理されます。
なので全く意味がわからず困っております。なお、バックエンドはPythonのFlask3.0.9です。Corsはすべて解除しております。
python
1# -*- coding: utf-8 -*- 2import json 3from flask import Flask,request 4from flask_cors import CORS 5from google.cloud import language 6from google.cloud.language import enums 7from google.cloud.language import types 8 9from google.cloud import language_v1 10from google.cloud.language_v1 import enums 11app = Flask(__name__) 12CORS(app)
ある文字数以上で発生するのでまったく意味がわかりません。
どなたかアドバイスいただけないでしょうか。
ヘッダー情報
ヘッダー情報などを追記します。(Chromeのネットワークタブで確認しました)
◎渡す文字数が少なくてうまくいく場合
general
1Request URL: http://api.myDomain.com/test/ 2Request Method: POST 3Status Code: 200 OK 4Remote Address: 183.**.**.37:80 5Referrer Policy: strict-origin-when-cross-origin
responseHeader
1HTTP/1.1 200 OK 2Server: nginx 3Date: Sat, 17 Oct 2020 00:51:54 GMT 4Content-Type: text/html; charset=utf-8 5Content-Length: 219 6Connection: keep-alive 7Access-Control-Allow-Origin: http://localhost:8080 8Vary: Origin 9Accept-Ranges: bytes 10
RequestHeader
1POST /test/ HTTP/1.1 2Host: api.np-sys.com 3Connection: keep-alive 4Content-Length: 58 5Accept: */* 6User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 7Content-Type: application/x-www-form-urlencoded; charset=UTF-8 8Origin: http://localhost:8080 9Referer: http://localhost:8080/ 10Accept-Encoding: gzip, deflate 11Accept-Language: ja,en-US;q=0.9,en;q=0.8
◎渡す文字数が多くてうまくいかない場合
general
1Request URL: http://api.myDOmain.com/test/ 2Referrer Policy: strict-origin-when-cross-origin
responseHeader
1HTTP/1.1 500 Internal Server Error 2Server: nginx 3Date: Sat, 17 Oct 2020 00:51:56 GMT 4Content-Type: text/html 5Content-Length: 3028 6Connection: keep-alive 7Last-Modified: Sat, 28 Jul 2018 08:59:43 GMT 8ETag: "bd4-5720b730b4f22" 9
RequestHeader
1POST /test/ HTTP/1.1 2Host: api.myDomain.com 3Connection: keep-alive 4Content-Length: 311 5Accept: */* 6User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 7Content-Type: application/x-www-form-urlencoded; charset=UTF-8 8Origin: http://localhost:8080 9Referer: http://localhost:8080/ 10Accept-Encoding: gzip, deflate 11Accept-Language: ja,en-US;q=0.9,en;q=0.8
情報不足や要領悪い部分あると思いますが、何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー