質問するログイン新規登録

質問編集履歴

6

文法の修正

2018/10/09 15:04

投稿

meron-pan
meron-pan

スコア44

title CHANGED
@@ -1,1 +1,1 @@
1
- pythonCGIからjsonを返したい
1
+ pythonCGIからjsonを返したい(クロスオリジン要求の解決)
body CHANGED
@@ -70,8 +70,7 @@
70
70
  ajaxGet();
71
71
  }
72
72
 
73
- ajaxGet = function ()
74
- ajaxGet = function () {
73
+ ajaxGet = function () {
75
74
  var req = new XMLHttpRequest();
76
75
  try{
77
76
  if (httpRequest.readyState === XMLHttpRequest.DONE) {

5

内容の変更

2018/10/09 15:04

投稿

meron-pan
meron-pan

スコア44

title CHANGED
File without changes
body CHANGED
@@ -1,11 +1,9 @@
1
1
  ### 前提・実現したいこと
2
2
  pythonでcgiを作ってみたいと思い、実験としてajaxを使ってjavascriptでjsonファイルを送信し、それをオウム返しするcgiを作りました。
3
- 返ってきたデータをコンソールで確認しようとしたところエラーが発生したのですが、原因がわかりません。
3
+ 返ってきたデータをコンソールで確認しようとしたところエラーが発生しましたが、解決方法がわかりません。
4
4
  使っているのは、python3.7と、javaScript、html5です。(開発環境はwindows(Python3.7インストール済み)、ブラウザはfireFoxで検証)
5
+ ローカルサーバーを立ち上げて実験しています。
5
6
 
6
- エラーメッセージを見るに、どうもpythonのコードの先頭で詰まっているようなのですが、問題の個所を消しても、また次の行がエラーになってしまい原因がわかりません。
7
-
8
-
9
7
  ファイル構成
10
8
  server/
11
9
   ├ cgi-bin/
@@ -14,12 +12,13 @@
14
12
  ├ajax.js
15
13
   └ index.html
16
14
 
15
+
16
+
17
17
  ### 発生している問題・エラーメッセージ
18
18
 
19
19
  ```
20
- XML スエラー: 整形式になってません
20
+ クロスオリジン要求をブロックしました: 同一生成元ポリシにより、http://127.0.0.1:8000/cgi-bin/server.pyあるリモートリソースの読み込みは拒否されます (理由: CORS ヘッダー ‘Access-Control-Allow-Origin’ が足りない)[詳細]
21
- URL: file:///C:/Users/userName/Desktop/server/cgi-bin/server.py
21
+ クロスオリジン要求をブロックしました: 同一生成元ポリシーにより、http://127.0.0.1:8000/cgi-bin/server.py にあるリモートリソースの読み込みは拒否されます (理由: CORS 要求が成功しなかった)。[詳細]
22
- 行番号: 1, 列番号: 2:
23
22
  ```
24
23
 
25
24
  ### 該当のソースコード
@@ -37,6 +36,7 @@
37
36
  # -*- coding: utf-8 -*-
38
37
 
39
38
  import io
39
+ import os
40
40
  import sys
41
41
  import cgi
42
42
  import cgitb
@@ -51,6 +51,7 @@
51
51
 
52
52
  if os.environ['REQUEST_METHOD'] == 'POST':
53
53
  form = cgi.FieldStorage()
54
+ print("Access-Control-Allow-Origin: *\n")
54
55
  print('Content-Type: text/json; charset=utf-8\r\n')
55
56
  print(form)
56
57
 
@@ -63,23 +64,27 @@
63
64
  ajaxSend = function (json) {
64
65
  console.log("a")
65
66
  var xhr = new XMLHttpRequest();
66
- xhr.open('POST', 'cgi-bin/server.py', true);
67
+ xhr.open('POST', 'http://127.0.0.1:8000/cgi-bin/server.py', true);
67
68
  xhr.setRequestHeader('content-type', 'application/json');
68
69
  xhr.send(json);
69
70
  ajaxGet();
70
71
  }
71
72
 
73
+ ajaxGet = function ()
72
- ajaxGet = function () {
74
+ ajaxGet = function () {
73
75
  var req = new XMLHttpRequest();
74
- req.onreadystatechange = function () {
76
+ try{
75
- if (req.readyState == 4) {
77
+ if (httpRequest.readyState === XMLHttpRequest.DONE) {
76
- if (req.status == 200) {
78
+ if (httpRequest.status === 200) {
77
- console.log(req.responseText)
79
+ alert(req.responseText);
80
+ }else {
81
+ alert('リクエストに問題が発生しました');
78
82
  }
79
- } else {
80
- console.log("リクエストに問題が発生しました")
81
83
  }
82
84
  }
85
+ catch(e){
86
+ alert('例外を補足:'+e.description);
87
+ }
83
88
  }
84
89
 
85
90
  json = {

4

ファイル構成追記

2018/10/09 15:01

投稿

meron-pan
meron-pan

スコア44

title CHANGED
File without changes
body CHANGED
@@ -10,6 +10,8 @@
10
10
  server/
11
11
   ├ cgi-bin/
12
12
   │ └  server.py
13
+ ├cgiserver
14
+ ├ajax.js
13
15
   └ index.html
14
16
 
15
17
  ### 発生している問題・エラーメッセージ
@@ -21,7 +23,7 @@
21
23
  ```
22
24
 
23
25
  ### 該当のソースコード
24
-
26
+ cgiserver.py
25
27
  ```python
26
28
  # -*- coding: utf-8 -*-
27
29
 
@@ -29,7 +31,7 @@
29
31
 
30
32
  http.server.test(HandlerClass = http.server.CGIHTTPRequestHandler)
31
33
  ```
32
-
34
+ server.py
33
35
  ```python
34
36
  #!/usr/bin/python3
35
37
  # -*- coding: utf-8 -*-
@@ -54,6 +56,7 @@
54
56
 
55
57
 
56
58
  ```
59
+ ajax.js
57
60
  ```Javascript
58
61
 
59
62
 
@@ -103,6 +106,7 @@
103
106
  ajaxSend(json);
104
107
  }
105
108
  ```
109
+ index.html
106
110
  ```html
107
111
  <!DOCTYPE html>
108
112
  <html lang="ja">

3

ファイル構成追加

2018/10/09 10:27

投稿

meron-pan
meron-pan

スコア44

title CHANGED
File without changes
body CHANGED
@@ -7,8 +7,11 @@
7
7
 
8
8
 
9
9
  ファイル構成
10
+ server/
11
+  ├ cgi-bin/
12
+  │ └  server.py
13
+  └ index.html
10
14
 
11
-
12
15
  ### 発生している問題・エラーメッセージ
13
16
 
14
17
  ```

2

ファイルの追加

2018/10/09 10:11

投稿

meron-pan
meron-pan

スコア44

title CHANGED
File without changes
body CHANGED
@@ -5,6 +5,10 @@
5
5
 
6
6
  エラーメッセージを見るに、どうもpythonのコードの先頭で詰まっているようなのですが、問題の個所を消しても、また次の行がエラーになってしまい原因がわかりません。
7
7
 
8
+
9
+ ファイル構成
10
+
11
+
8
12
  ### 発生している問題・エラーメッセージ
9
13
 
10
14
  ```
@@ -15,6 +19,14 @@
15
19
 
16
20
  ### 該当のソースコード
17
21
 
22
+ ```python
23
+ # -*- coding: utf-8 -*-
24
+
25
+ import http.server
26
+
27
+ http.server.test(HandlerClass = http.server.CGIHTTPRequestHandler)
28
+ ```
29
+
18
30
  ```python
19
31
  #!/usr/bin/python3
20
32
  # -*- coding: utf-8 -*-

1

開発環境について、追加

2018/10/09 10:07

投稿

meron-pan
meron-pan

スコア44

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
  pythonでcgiを作ってみたいと思い、実験としてajaxを使ってjavascriptでjsonファイルを送信し、それをオウム返しするcgiを作りました。
3
3
  返ってきたデータをコンソールで確認しようとしたところエラーが発生したのですが、原因がわかりません。
4
- 使っているのは、python3.7と、javaScript、html5です。
4
+ 使っているのは、python3.7と、javaScript、html5です。(開発環境はwindows(Python3.7インストール済み)、ブラウザはfireFoxで検証)
5
5
 
6
6
  エラーメッセージを見るに、どうもpythonのコードの先頭で詰まっているようなのですが、問題の個所を消しても、また次の行がエラーになってしまい原因がわかりません。
7
7