我正在将一个应用从Django迁移到纯HTML5/CSS和AngularJS,但在向TheTVDB REST API服务器(https://api.thetvdb.com/)进行JSON POST请求时遇到问题。
我尝试避免预检请求,但没有成功。由于我在使用Python的requests库时没有遇到这个问题(例如,我从运行AngularJS应用程序的同一台机器触发对tvDB的请求时完全没有问题),我想知道是否有一种方法或不同的指令在AngularJS中防止设置CORS标头。
TheTVDB不会将CORS添加到其服务器上,因为他们的大多数用户正在运行Laravel(PHP)、Java和Django(Python)应用程序,并且使用它们的服务没有这样的CORS问题。
非常感谢您的帮助。
谢谢, 最好的问候 TS
API调用是在AngularJS的服务中完成的:
return {
login: function(){
return $http({
method: 'POST',
dataType: 'json',
headers: {'Content-Type': 'application/json'},
data: {'apikey':apiKey, 'username': username, 'userkey': identifier},
url: tvdbAuthURL
})
}
}
然后我遇到了这个错误:
XMLHttpRequest cannot load https://api.thetvdb.com/login/. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access. The response had HTTP status code 401.
我尝试避免预检请求,但没有成功。由于我在使用Python的requests库时没有遇到这个问题(例如,我从运行AngularJS应用程序的同一台机器触发对tvDB的请求时完全没有问题),我想知道是否有一种方法或不同的指令在AngularJS中防止设置CORS标头。
TheTVDB不会将CORS添加到其服务器上,因为他们的大多数用户正在运行Laravel(PHP)、Java和Django(Python)应用程序,并且使用它们的服务没有这样的CORS问题。
非常感谢您的帮助。
谢谢, 最好的问候 TS