質問編集履歴
6
文法の修正
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
|
-
|
73
|
+
ajaxGet = function () {
|
75
74
|
var req = new XMLHttpRequest();
|
76
75
|
try{
|
77
76
|
if (httpRequest.readyState === XMLHttpRequest.DONE) {
|
5
内容の変更
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
|
-
|
20
|
+
クロスオリジン要求をブロックしました: 同一生成元ポリシーにより、http://127.0.0.1:8000/cgi-bin/server.py にあるリモートリソースの読み込みは拒否されます (理由: CORS ヘッダー ‘Access-Control-Allow-Origin’ が足りない)。[詳細]
|
21
|
-
|
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
|
-
|
76
|
+
try{
|
75
|
-
if (
|
77
|
+
if (httpRequest.readyState === XMLHttpRequest.DONE) {
|
76
|
-
if (
|
78
|
+
if (httpRequest.status === 200) {
|
77
|
-
|
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
ファイル構成追記
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
ファイル構成追加
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
ファイルの追加
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
開発環境について、追加
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
|
|