如何解决调用WCF的Javascript提取-405不允许使用方法
学习javascript,我在本地计算机上运行了WCF服务。 IIS版本是10。
我正在尝试通过在浏览器控制台中使用Javascript FETCH来使用其中一种方法。承诺说“已实现”,但不允许使用该方法。在Google搜索中显示它与CORS相关,因此我在网站标题中添加了一个标题以允许(Access-Control-Allow-Origin *)。我只能托管WCF(测试服务),因此无法编辑WCF的运营合同。
有什么办法可以查看数据?我可以使用WCF Test Client访问服务和方法。
我还尝试使用一些跨源代理,它可以工作,但是如何查看WCF测试客户端输出的数据呢?
async function test(){
let s = await fetch('http://localhost/Main/Oriol.Host.BussServer/FinancialService.svc/GetAllTaxGroups',{
method: 'GET',cache: 'no-cache',headers: {
'Content-Type': 'application/json'
}})).then(a => a.json());
console.log(s);
}
编辑:
这是界面...
<service name="Oriol.Financial.Service.FinancialService" behaviorConfiguration="OriolServiceBehavior">
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="web" bindingConfiguration="restWebHttpBinding" contract="Oriol.Financial.Domain.ServiceInterfaces.IFinancialService" />
<endpoint address="soap" binding="basicHttpBinding" bindingConfiguration="OriolBasicHttpBinding" contract="Oriol.Financial.Domain.ServiceInterfaces.IFinancialService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint binding="netTcpBinding" bindingConfiguration="PortSharingBinding" contract="Oriol.Financial.Domain.ServiceInterfaces.IFinancialService" />
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
</service>
这是FinancialService.svc
<%@ ServiceHost Language="C#" Debug="true" Service="Oriol.Financial.Service.FinancialService" %>
错误:
GET http://localhost/Main/Oriol.Host.BussServer/FinancialService.svc/GetAllTaxGroups 405 (Method Not Allowed)
Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
谢谢
编辑:
这是响应:
Response {type: "cors",url: "http://localhost/Main/Oriol.Host.BussServer/FinancialService.svc/GetAllTaxGroups",redirected: false,status: 405,ok: false,…}
body: (...)
bodyUsed: false
headers: Headers {}
ok: false
redirected: false
status: 405
statusText: "Method Not Allowed"
type: "cors"
url: "http://localhost/Main/Oriol.Host.BussServer/FinancialService.svc/GetAllTaxGroups"
__proto__: Response
解决方案:
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
此外,在fiddler中进行的仔细检查显示,安全性仅允许POST。除了Method之外,我不需要任何其他标头参数。
现在一切正常,谢谢大家。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。