Rumah > Soal Jawab > teks badan
Saya cuba menghantar data ke Google Cloud Functions daripada apl ionik tetapi saya terus mendapat ralat berikut:
Akses kepada XMLHttpRequest di 'https://xxxxxxxxxxxxxxx.cloudfunctions.net/upload_data' dari asal 'http://localhost:8100' telah disekat oleh dasar CORS: Akses tidak membenarkan jenis kandungan medan pengepala permintaan - dalam respons pra penerbangan Kawalan- Benarkan-Tajuk.
Walaupun semasa mengalih keluar pengepala permintaan, ralat yang sama ditunjukkan. Sebarang bantuan amatlah dihargai, terima kasih.
Kod skrip taip saya:
var httpheader = new HttpHeaders(); httpheader.append('Accept','application/json'); httpheader.append('Content-Type','application/json'); let data = {"testbody":"this is test data"}; await this.http.post('https://xxxxxxxxxxxxxxxx.cloudfunctions.net/upload_data',data ,{headers:httpheader}).subscribe((resp)=>{ console.log(resp); });
fungsi awan python:
def hello_world(request): """Responds to any HTTP request. Args: request (flask.Request): HTTP request object. Returns: The response text or any set of values that can be turned into a Response object using `make_response <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>`. """ if request.method == 'OPTIONS': headers={'Access-Control-Allow-Origin':'*', 'Access-Control-Allow-Methods':'GET', 'Access-Control-Allow-Headrs':'Content-Type', 'Access-Control-Max-Age':'3600' } return ('',204,headers) headers={'Access-Control-Allow-Origin':'*'} request_json = request.get_json(silent=True) request_args = request.args if request_json and 'testbody' in request_json: testname = request_json['testbody'] elif request_args and 'testbody' in request_args: testname = request_args['testbody'] else: testname = 'Nothing sent' return (jsonify(testname),200,headers)
P粉7636623902024-02-05 00:09:52
CORS
相关配置需要在服务器端
代码中完成。从您的问题中,我看到您在 Python
中使用 Flask
框架。所以需要在Flask中配置CORS
adalah seperti berikut:
Pasang flask-cors dengan menjalankan -
pip install -U flask-cors
Pertimbangkan contoh kod titik akhir berikut:
from flask import Flask from flask_cors import CORS, cross_origin app = Flask(__name__) cors = CORS(app) app.config['CORS_HEADERS'] = 'Content-Type' @app.route("/") @cross_origin() def helloWorld(): return "Hello, cross-origin-world!"
Dikemas kini
Dalam Production
环境中,请禁止禁止
使用Access-Control-Allow-Origin':'*'
。相反,您应该 whitelist
nama domain anda. Baca lebih lanjut tentang ini di sini dan di sini.
Selain itu, jika anda menggunakan Ionic with Capacitor
, saya syorkan anda menggunakan pemalam Http Ionic 与 Capacitor
一起使用,我建议使用 Http 插件。如果可能,您还可以编写自己的 自定义插件
来使用底层操作系统 平台特定的
API 实现网络调用 natively
. Jika boleh, anda juga boleh menulis pemalam tersuai
anda sendiri untuk menggunakan platform-specific
pelaksanaan API
panggilan native
sistem pengendalian asas kerana Ini menghalang sebarang isu berkaitan CORS daripada berlaku.