我使用ngResource在Amazon Web Services上调用REST API时收到此错误:
XMLHttpRequest无法加载 http://server.apiurl.com:8000/s/login?login=facebook.对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.原产地" :HTTP //本地主机,因此"是不允许访问. 错误405
服务:
socialMarkt.factory('loginService', ['$resource', function($resource){
var apiAddress = "http://server.apiurl.com:8000/s/login/";
return $resource(apiAddress, { login:"facebook", access_token: "@access_token" ,facebook_id: "@facebook_id" }, {
getUser: {method:'POST'}
});
}]);
Run Code Online (Sandbox Code Playgroud)
控制器:
[...]
loginService.getUser(JSON.stringify(fbObj)),
function(data){
console.log(data);
},
function(result) {
console.error('Error', result.status);
}
[...]
Run Code Online (Sandbox Code Playgroud)
我正在使用Chrome,我不知道还有什么可以解决这个问题.我甚至将服务器配置为接受来自源的头文件localhost.
这是PUT我的Web API上方法的调用- 方法的第三行(我从ASP.NET MVC前端调用Web API):

client.BaseAddress是http://localhost/CallCOPAPI/.
这是contactUri:

这是contactUri.PathAndQuery:

最后,这是我的405回复:

这是我的Web API项目中的WebApi.config:
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApiGet",
routeTemplate: "api/{controller}/{action}/{regionId}",
defaults: new { action = "Get" },
constraints: new { httpMethod = new HttpMethodConstraint("GET") });
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
Run Code Online (Sandbox Code Playgroud)
我试着剥离下来获取传递到路径PutAsJsonAsync,以string.Format("/api/department/{0}", department.Id)和string.Format("http://localhost/CallCOPAPI/api/department/{0}", department.Id)没有运气.
有没有人有任何想法为什么我得到405错误?
UPDATE
根据请求,这是我的部门控制器代码(我将发布我的前端项目的部门控制器代码,以及WebAPI的部门ApiController代码):
前端部门控制员 …
我不小心删除了SVN中的文件夹并立即将其添加回来.我遇到了这个问题,我的解决方案最终完全从我的本地副本以及服务器副本中删除了该文件夹.我可以在任何其他文件或文件夹上进行更新和提交而没有问题,但是如果我尝试创建具有相同名称,添加和提交的文件夹,则会出现以下错误:
svn:服务器发送意外返回值(405 Method Not Allowed)以响应对'/ svn/www /!svn/wrk/9de0d765-2203-456c-af16-58e792ec7ac0/trunk/htdocs/solutions/medical'的MKCOL请求
我已经运行了无数的清理,提交,更新等.没有解决问题.想法?
仅供参考,我没有重命名顶级文件夹的选项.
我很感激任何帮助,因为该网站应该今晚上线!
我有一个带有Delete方法的web api控制器.该方法在运行IIS Express(Windows 8)的本地计算机上执行正常,但只要我将其部署到实时IIS服务器(Windows Server 2008 R2),它就会停止工作并抛出以下错误消息:
HTTP错误405.0 - 不允许的方法由于使用了无效的方法(HTTP Verb),无法显示您要查找的页面
我在网上寻找解决方案,并实施了最合理的解决方案.我的网络配置包含以下设置:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
我也试图在IIS中更改处理程序映射和请求筛选无济于事.请注意,IIS中的WebDAV创作规则似乎已被禁用.
任何想法将不胜感激谢谢.
我正在尝试使用OAuth开发REST提供程序.我正在使用Django RESTFramework和DjangoOAuthToolkit.我做了一个GET并且它工作得很好但是我正在尝试使用POST而服务器响应{"detail":"方法'POST'不允许."}这是我的代码:
# views.py
@api_view(['POST'])
def pruebapost(request):
usuario = User()
access_token = Token.objects.get(
key=request.POST['oauth_token']
)
usuario = access_token.user
content = {'saludo': usuario.username}
return Response(content)
# settings.py
OAUTH_AUTHORIZE_VIEW = 'principal.views.oauth_authorize'
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
),
'DEFAULT_PARSER_CLASSES': (
'rest_framework.parsers.JSONParser',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.OAuthAuthentication',
),
}
Run Code Online (Sandbox Code Playgroud)
我正在使用它作为"测试"客户端:
import urlparse
import oauth2 as oauth
import requests
consumer_key = "clave"
consumer_secret = "secreto"
consumer = oauth.Consumer(consumer_key, consumer_secret)
client = oauth.Client(consumer)
resource_url = 'http://blablabla.pythonanywhere.com/prueba'
consumer = oauth.Consumer(key='clave', secret='secreto')
token = oauth.Token(key='e7456187a43141af8d2e0d8fa99b95b9', …Run Code Online (Sandbox Code Playgroud) django post oauth http-status-code-405 django-rest-framework
我有一个PHP Facebook应用程序,我已经上传到Microsoft服务器.当我运行应用程序时,我收到此错误.有人知道这个的原因吗?
405 - 不允许用于访问此页面的HTTP动词.无法显示您要查找的页面,因为使用了无效的方法(HTTP谓词)来尝试访问.
任何人都可以对此有所了解吗?我觉得我今天浪费了一整天的时间在网上搜索和搜索有关如何执行此操作的任何信息.我创建了一个非常简单的WCF RESTful服务.它基本上是一个概念证明.我有一个简单的数据库,我只是想让它工作,以便我可以查看,创建,更新和删除项目.现在我只有查看和更新工作.我稍后会解决这个问题.现在我无法弄清楚为什么删除不起作用.到目前为止,我发现的几乎所有内容都告诉我,我需要禁用WebDAV模块.我做到了,然后我得到PUT工作.但我不能让DELETE工作.每当我尝试通过我的服务调用DELETE时,我会收到以下错误:
远程服务器返回意外响应:(405)方法不允许.
所以它似乎在我的服务器上的某个地方它不允许DELETE动词.但对于我的生活,我无法理解.我已经检查了Handler Mappings,处理程序允许所有动词用于.SVC扩展.我已禁用WebDAV.我不确定在哪里可以看.我在Windows Server 2008 R2上使用IIS 7.5.
(如果能提供帮助,我可以提供代码)
谢谢,科里
我有以下servlet:
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 16252534;
private static int ping = 3000;
private Thread t;
private static boolean shouldStop = false;
@Override
public void init() throws ServletException {
super.init();
t = new Thread(new Runnable() {
@Override
public void run() {
while(!shouldStop) {
System.out.println("Now:" + System.currentTimeMillis());
try {
Thread.sleep(ping);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
t.start();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
super.doGet(req, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用JavaScript将DELETE传递给asp.net MVC中的URL但是我总是得到405 Method not allow返回.
反正有没有让这项工作?
仅供参考:我已将该[AcceptVerb(HttpVerb.Delete)]属性放在我的控制器上.
DELETE /post/delete/8
Run Code Online (Sandbox Code Playgroud)
这是请求
当我尝试使用Phantomjs 废弃此站点时,默认情况下,Phantomjs会将以下标头发送到服务器:
"name":"User-Agent",
"value":"Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.1 Safari/534.34"}
Run Code Online (Sandbox Code Playgroud)
我得到了status 405 "Not Allowed"回应.
我在Phantomjs API Reference中读到,为了模仿来自其他浏览器的请求,我应该更改我的User-Agent值.在维基百科上,我找到了我应该用来假装在Ubuntu下的Firefox的价值:
'name': 'User-Agent',
'value': 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:16.0) Gecko/20120815 Firefox/16.0'
Run Code Online (Sandbox Code Playgroud)
我应该在Phantomjs的哪个部分放置这些属性?我应该在哪里插入它们 - 在page.open里面,或在page.evaluate里面,或者在它的顶部?
asp.net-mvc ×3
rest ×2
ajax ×1
c# ×1
cors ×1
django ×1
http ×1
http-get ×1
http-verbs ×1
javascript ×1
json ×1
oauth ×1
phantomjs ×1
post ×1
servlets ×1
svn ×1
user-agent ×1
wcf ×1
web-scraping ×1