[英]Django jquery ajax cors error
當我嘗試使用ajax發布數據時,我在控制台中收到此錯誤。 應該在此URL確認此數據,然后我應該從中獲取包含更多數據的響應。
Cross-Origin Request Blocked: The Same Origin Policy disallows
reading the remote resource at https://secure.paygate.co.za/payweb3/process.trans.
(Reason: CORS header 'Access-Control-Allow-Origin' missing).
我正在使用django-cors-headers作為中間件來添加標題。 我遵循了所有的配置說明。
我的settings.py:
INSTALLED_APPS = [
# ...
'corsheaders',
# ...
]
MIDDLEWARE = [
# ...
'corsheaders.middleware.CorsMiddleware',
# ...
]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS = (
'GET',
'POST',
'OPTIONS',
)
Ajax調用:
$.ajax({
type: "POST",
url: url,
dataType: "json",
data: data,
success: function(data){
alert('success');
},
error: function(data){
alert('error');
}
});
數據和URL在此之上聲明,並且該部分很好。 每次提交時,我只會收到錯誤警報。
我的包裹:
Django==1.11.3
django-cors-headers==2.1.0
pytz==2017.2
我在Windows 10。
編輯:我為ajax添加了csrfSafeMethod。 我不知道這是否與它有關? 此代碼由djangoproject在此處提供docs.djangoproject.com/en/1.11/ref/csrf
EDIT2:我最終在內部發送了一個ajax調用,因此我使用urllib與django進行了跨域工作。 這對跨域發布數據很有幫助。
根據文檔:
CorsMiddleware應該放置在盡可能高的位置,尤其是在可以生成響應的任何中間件之前,例如Django的CommonMiddleware或Whitenoise的WhiteNoiseMiddleware。 如果不是以前,它將無法將CORS標頭添加到這些響應中。
我建議您將其作為所有當前中間件中的第一個中間件(最高)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.